omninode-memory 0.18.2__tar.gz → 0.18.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/required-checks.yaml +50 -1
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/auto-merge.yml +35 -1
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/auto-tag-on-merge.yml +4 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/ban-hardcoded-runner-ip.yml +6 -1
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/call-occ-autobind.yml +9 -7
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/call-occ-companion-effect.yml +3 -2
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/call-reject-skip.yml +5 -1
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/check-handshake.yml +6 -3
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/ci.yml +290 -3
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/contract-validation.yml +1 -1
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/dep-provenance-gate.yml +4 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/docs-validate.yml +5 -1
- omninode_memory-0.18.4/.github/workflows/hardcoded-model-config.yml +24 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/imperative-contract-guard.yml +6 -2
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/kb-doc-gate.yml +5 -1
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/main-target-guard.yml +4 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/omni-standards-compliance.yml +4 -0
- omninode_memory-0.18.4/.github/workflows/pin-resolvability-gate.yml +111 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/pr-title-check.yml +4 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/pre-commit.yml +4 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/public-repo-hygiene.yml +6 -2
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/release.yml +18 -0
- omninode_memory-0.18.4/.github/workflows/secrets-baseline-wiring.yml +39 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/security-scan.yml +5 -1
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/stale-todo-gate.yml +4 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/todo-audit-on-merge.yml +4 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/url-authority-gate.yml +4 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/validate-validator-requirements.yml +4 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.gitignore +40 -0
- omninode_memory-0.18.4/.onex_ratchets/canonical_file_shape_baseline.txt +75 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.pre-commit-config.yaml +153 -30
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.public-repo-hygiene.yaml +1 -0
- omninode_memory-0.18.4/.secrets.baseline +500 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/CHANGELOG.md +20 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/CLAUDE.md +2 -2
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/PKG-INFO +16 -16
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/README.md +13 -13
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/architecture-handshakes/validator-requirements-baseline.yaml +0 -10
- omninode_memory-0.18.4/config/hardcoded_model_config_baseline.yaml +53 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/pyproject.toml +9 -3
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/check_no_hardcoded_bolt.sh +19 -5
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/test_selection_adjacency.yaml +14 -0
- omninode_memory-0.18.4/scripts/ci/verify_pypi_pin_resolvability.py +348 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validate_ci_precommit_alignment.py +41 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/check_kafka_no_hardcoded_fallback.sh +8 -3
- omninode_memory-0.18.4/scripts/validation/check_no_internal_ips.sh +17 -0
- omninode_memory-0.18.4/scripts/validation/check_precommit_additional_dependencies.sh +82 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_naming.py +14 -9
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_no_backward_compatibility.py +25 -11
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_no_env_fallbacks.py +13 -2
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/adapter_graph_memory.py +1 -1
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/contract.yaml +0 -9
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/contract.yaml +5 -31
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/contract.yaml +3 -23
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/contract.yaml +3 -12
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/contract.yaml +1 -4
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/contract.yaml +3 -10
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/contract.yaml +3 -12
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/contract.yaml +3 -12
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/wiring.py +24 -29
- omninode_memory-0.18.4/tests/fixtures/omn19666/pre-commit-git-dependency.yaml +12 -0
- omninode_memory-0.18.4/tests/fixtures/omn19666/pre-commit-pypi-dependency.yaml +12 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_golden_chain_qdrant_ingestion.py +10 -1
- omninode_memory-0.18.4/tests/scripts/test_occ_eligibility_enforcement.py +165 -0
- omninode_memory-0.18.4/tests/scripts/test_pin_resolvability_conflict_report.py +115 -0
- omninode_memory-0.18.4/tests/scripts/test_pin_resolvability_gate_workflow.py +129 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_contract_validation.py +58 -53
- omninode_memory-0.18.4/tests/test_precommit_additional_dependencies_omn19666.sh +23 -0
- omninode_memory-0.18.4/tests/test_precommit_staged_scope_omn19612.py +205 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_handler_routing_boot_resolvable.py +1 -1
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_wiring.py +41 -1
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_validate_ci_precommit_alignment.py +20 -1
- omninode_memory-0.18.4/tests/unit/test_workflow_sibling_pins.py +94 -0
- omninode_memory-0.18.4/tests/workflows/test_auto_merge_ready_for_review_omn19216.py +88 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/workflows/test_auto_merge_workflow.py +19 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/uv.lock +15 -15
- omninode_memory-0.18.2/.secrets.baseline +0 -196
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.claude/architecture-handshake.md +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.env.example +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.flake8 +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/CODE_OF_CONDUCT.md +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/CONTRIBUTING.md +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/dependabot.yml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/build-and-push-migrate-image.yml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/release-dry-run.yml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/sibling-lock-refresh.yml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/validator-runtime-profiles.yml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.kb-doc-gate.yaml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.markdown-link-check.json +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.onex_ratchets/noncanonical_class_allowlist.yaml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.pre-commit-hooks/reject-deploy-gate-skip-token.sh +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.serena/project.yml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.yamlfmt +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/LICENSE +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/SECURITY.md +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/architecture-handshakes/validator-requirements.yaml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/contract.yaml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/contracts/OMN-12245.yaml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations/001_create_subscription_tables.sql +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations/002_create_memories_table.sql +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations/003_create_crawl_state_table.sql +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations/004_create_navigation_sessions_table.sql +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations/005_backfill_null_checksums.sql +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations_pending/004_create_navigation_paths_collection.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations_pending/004_create_navigation_sessions_table.sql +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/pending/003_create_crawl_state_table.sql +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/docker/Dockerfile.migrate +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docker-compose.prod.yml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docker-compose.yml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-icon-black.png +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-icon-full-color.svg +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-icon-white.png +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-inline-black.png +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-inline-full-color.svg +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-inline-white.png +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-stacked-black.png +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-stacked-full-color.svg +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-stacked-white.png +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-wordmark-black.svg +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-wordmark-grey.svg +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-wordmark-white.svg +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/examples/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/examples/advanced_architecture_demo.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/pyrightconfig.json +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/check_dep_provenance.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/check_migration_freeze.sh +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/collect_changed_files.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/detect_test_paths.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/occ_manual_replay_precheck.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/run_runtime_profiles_validator.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/test_selection_loader.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/test_selection_models.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/graphify_to_memgraph.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/graphify_to_qdrant.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/check_ai_slop.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/foundation_validation_common.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_enum_casing.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_http_imports.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_kafka_imports.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_model_locations.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_pydantic_patterns.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_secrets.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_single_class_per_file.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_spdx_headers.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/_compat_imports.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_concurrency.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_correlation_context.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_db_url.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_error_sanitizer.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_handler_constants.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_health_manager.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_metrics_counter.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_observability_wrapper.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_pii_detector.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_resource_manager.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_retry_utils.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/bootstrap.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/crawl/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/crawl/enum_context_source_type.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/crawl/enum_crawler_type.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/crawl/enum_detected_doc_type.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_attribution_signal_type.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_context_item_type.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_data_type.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_entity_extraction_mode.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_error_code.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_intelligence_operation_type.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_lifecycle_state.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_memory_operation_type.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_memory_storage_type.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_memory_type.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_migration_status.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_node_type.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_operation_status.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_preferred_tone.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_priority_level.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_promotion_tier.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_semantic_entity_type.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_severity.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_subscription_status.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_technical_level.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_trust_level.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/errors/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/errors/embedding_errors.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/adapter_embedding_http.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/adapter_intent_graph.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/adapter_intent_graph_contract.yaml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/adapter_rate_limiter.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/adapter_valkey.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/models/model_adapter_intent_graph_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/models/model_intent_domain.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/models/model_intent_graph_health.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/handler_intent.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/handler_subscription.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/handler_subscription_contract.yaml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/models/model_handler_intent_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_connections_result.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_filesystem_adapter_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_graph_memory_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_graph_memory_health.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_memory_connection.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_related_memory.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_related_memory_result.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_doc_source_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_embedding_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_filesystem_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_handler_semantic_compute_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_linear_scope_mapping.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_memory_service_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_path_scope_mapping.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_postgres_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_promotion_threshold_set.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_qdrant_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_rate_limiter_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_scope_mapping_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_semantic_compute_policy_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/container/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/contracts/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/contracts/mixin_handler_routing.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/contracts/model_contract_compute_extended.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/contracts/model_contract_effect_extended.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/contracts/model_contract_orchestrator_extended.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/contracts/model_contract_reducer_extended.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_memory_context.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_memory_metadata.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_memory_parameters.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_memory_request.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_memory_response.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_operation_metadata.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_processing_metrics.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_provenance.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_crawl_tick_command.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_document_changed_event.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_document_discovered_event.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_document_indexed_event.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_document_indexed_kreuzberg_event.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_document_parse_failed_event.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_document_removed_event.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/types.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/events/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/events/model_crawl_tick_command.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/events/model_intent_classified_event.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_audit_metadata.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_configuration.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_connection_metadata.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_error_details.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_health_metadata.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_health_response.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_memory_data.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_metrics_response.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_migration_progress.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_notes.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_priority.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_progress_summary.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_semver.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_success_metrics.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_system_health.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_tags.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_trust_score.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_typed_collections.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_user.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/intelligence/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/intelligence/model_intelligence_analysis.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/intelligence/model_pattern_recognition_result.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/intelligence/model_semantic_analysis_result.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/intelligence/model_semantic_entity.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/intelligence/model_semantic_entity_list.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/memory/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/memory/model_memory_item.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/memory/model_memory_query.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/memory/model_memory_search_result.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/memory/model_memory_storage_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/memory/model_similarity_result.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/persona/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/persona/model_persona_signal.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/persona/model_user_persona_v1.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/scoring/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/scoring/model_context_item_stats.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/scoring/model_context_policy_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/scoring/model_promotion_decision.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/service/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/service/model_service_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/service/model_service_health.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/service/model_service_registry.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/subscription/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/subscription/constants.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/subscription/model_notification_event.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/subscription/model_notification_event_payload.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/subscription/model_subscription.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_audit.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_circuit_breaker_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_circuit_breaker_stats_response.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_concurrency.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_correlation_context.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_health_check_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_health_check_details.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_health_check_result.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_health_status.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_pii_detection_result.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_pii_detector_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_pii_match.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_pii_pattern_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_pii_type.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_resource_health_check.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_retry_attempt_info.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_retry_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_retry_statistics.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_structured_log_entry.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_system_health.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/base.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/contract.yaml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_request.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_response.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/handlers/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/handlers/handler_agent_learning_retrieval.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/model_request.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/model_response.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/handlers/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/handlers/handler_intent_query.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/mappers/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/mappers/util_intent_mapping.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/models/model_handler_intent_query_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/registry/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/registry/registry_intent_query_effect.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/adapters/adapter_intent_storage.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_request.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_response.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/adapters/adapter_kreuzberg_client.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/contract.yaml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/handler_kreuzberg_parse.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_result.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_consolidator_reducer/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_postgres_deactivate_memory.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_runtime_tick_memory.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_archive.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_expire.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_tick.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/validator_lifecycle_transition.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/adapters/adapter_embedding_client.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/contract.yaml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/contract_descriptor.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_db_mock.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_decay.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_fusion.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_graph_mock.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_memory_retrieval.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant_mock.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_embedding_client_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_db_mock_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_graph_mock_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_memory_retrieval_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_mock_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_request.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_response.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/adapters/adapter_filesystem.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/contract.yaml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_request.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_response.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/handler_navigation_history_reducer.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_request.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_response.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_session.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/node_navigation_history_reducer.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/handlers/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/handlers/handler_persona_classify.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/models/model_classify_request.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/models/model_classify_result.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/adapters/adapter_postgres_persona.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/contract.yaml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/models/model_persona_storage_request.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/models/model_persona_storage_response.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/handler_semantic_compute.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_request.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_response.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/node_semantic_analyzer_compute.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/handlers/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/handlers/handler_similarity_compute.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/models/model_handler_similarity_compute_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_request.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_response.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/node_similarity_compute.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/base_protocols.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/data_models.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/error_models.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/protocol_embedding.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/protocol_embedding_provider.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/protocol_handler_intent.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/protocol_intent_graph_adapter.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/protocol_secrets_provider.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/adapters.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/contract_topics.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/dispatch_handlers.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/handler_lifecycle.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/handler_lifecycle_contract.yaml +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/introspection.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/message_type_registration.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/plugin.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/secrets.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/settings.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/tools/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/tools/contract_linter.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/tools/validators/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/tools/validators/validator_contract.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/topics.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/conftest.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/gates/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/gates/test_ban_hardcoded_runner_ip_scope.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/gates/test_consumer_group_name_authorization.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/test_adapter_embedding_http.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/test_adapter_embedding_http_integration.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/test_adapter_graph_memory.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/test_adapter_graph_memory_integration.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/test_adapter_intent_graph.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/test_adapter_rate_limiter.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/test_handler_intent.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/test_handler_semantic_compute.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/conftest.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/nodes/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/nodes/test_kreuzberg_parse_effect.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/nodes/test_memory_lifecycle_orchestrator_integration.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/nodes/test_navigation_history_reducer_integration.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_entry_point_discovery.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_golden_chain_memgraph_ingestion.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_handler_lifecycle_pattern.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_handler_subscription.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_node_agent_coordinator.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_persona_round_trip.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/models/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/models/contracts/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/models/contracts/test_extended_contracts.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/models/events/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/models/events/test_model_intent_classified_event.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/models/test_frozen_boundary_models.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_intent_query_effect/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_intent_query_effect/conftest.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_intent_query_effect/test_handler_intent_query_integration.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_intent_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_intent_storage_effect/test_handler_intent_storage_adapter_integration.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_memory_retrieval_effect/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_memory_retrieval_effect/test_contract_descriptor.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_memory_retrieval_effect/test_dispatch_entrypoint_contract.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_memory_retrieval_effect/test_memory_retrieval_effect.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_memory_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_memory_storage_effect/test_memory_storage_effect.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_navigation_history_reducer/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_navigation_history_reducer/test_navigation_history_reducer_unit.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_similarity_compute/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_similarity_compute/test_similarity_compute.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/scripts/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/scripts/test_check_dep_provenance.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_bootstrap.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_concurrency.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_config_models.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_contract_version.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_db_url.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_foundation.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_health_manager.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_migration_progress.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_node_enforcement.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_node_imports.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_observability_manager.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_observability_metrics.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_performance.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_resource_manager.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_secrets_provider.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_semantic_compute_policy_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_settings.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_validation_scripts.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/adapters/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/adapters/test_adapter_pii_detector.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/adapters/test_pii_live_call_paths.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/handlers/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/handlers/adapters/test_graph_adapter_typing.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/handlers/test_subscription_typing.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/fixtures/omn16765/hybrid_retrieval_corpus.json +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_activation_decay.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_decay_ranking.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_handler_agent_learning_retrieval.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_handler_qdrant.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_hybrid_retrieval_fusion.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_kreuzberg_parse_effect/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_kreuzberg_parse_effect/test_handler_kreuzberg_parse.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_postgres_deactivate_memory.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_runtime_tick_memory.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_archive.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_expire.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_tick.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_validator_lifecycle_transition.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_model_handler_qdrant_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_navigation_history_reducer_contract.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_node_agent_learning_retrieval_models.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_persona_builder.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_persona_storage_retrieval.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/conftest.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_adapters.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_contract_handler_completeness.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_contract_topics.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_dispatch_handlers.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_introspection.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_memory_subscription_group_is_authorized.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_message_type_registration.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_plugin.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_plugin_graph_memory_wiring.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_plugin_integration_wiring.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_plugin_memory_validate_handshake.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_standalone_handler_contracts.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/scripts/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/scripts/test_check_ai_slop.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/scripts/test_collect_changed_files.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/scripts/test_occ_manual_replay_precheck.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_auto_tag_app_token_push_omn18662.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_ci_workflow_shape.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_contract_linter.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_detect_test_paths.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_dispatch_retrieval_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_entry_points.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_graphify_to_memgraph.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_graphify_to_qdrant.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_handler_subscription_notify_strict.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_ingestion_models.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_model_user_persona_v1.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_no_duplicate_node_uuids.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_occ_companion_effect_edited_trigger_omn_18334.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_persona_enums.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_scope_mapping_config.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_sql_placeholders.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_validate_kafka_imports.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/workflows/__init__.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/validate_architecture_improvements.py +0 -0
- {omninode_memory-0.18.2 → omninode_memory-0.18.4}/validation/runtime_profiles_allowlist.yaml +0 -0
|
@@ -14,9 +14,23 @@
|
|
|
14
14
|
#
|
|
15
15
|
# Applied via: gh api repos/OmniNode-ai/omnimemory/branches/main/protection -X PUT
|
|
16
16
|
# Mode: strict (branch must be up-to-date before merging)
|
|
17
|
-
#
|
|
17
|
+
# Manifest entries (including CI Summary members): 15
|
|
18
18
|
|
|
19
19
|
required_checks:
|
|
20
|
+
# OMN-18854: this is an umbrella member, not a separate protection context.
|
|
21
|
+
- name: "occ-preflight / eligibility"
|
|
22
|
+
workflow: ci.yml
|
|
23
|
+
job_id: occ-preflight
|
|
24
|
+
conditional: true
|
|
25
|
+
condition: "Required on pull_request and merge_group; not applicable on push or workflow_dispatch"
|
|
26
|
+
rationale: >-
|
|
27
|
+
OMN-18854. The shared eligibility validator feeds the required CI Summary
|
|
28
|
+
through the OCC Eligibility Admission job. On pull_request and
|
|
29
|
+
merge_group, only successful preflight passes admission; CI Summary
|
|
30
|
+
requires a successful admission verdict on every event. Failed,
|
|
31
|
+
cancelled, skipped and absent results block. The caller and validator
|
|
32
|
+
source use the same immutable omnibase_core revision.
|
|
33
|
+
|
|
20
34
|
# -- Phase 1: Quick Validation (parallel, ~2-5 min) -------------------------
|
|
21
35
|
|
|
22
36
|
- name: "Migration Freeze Check"
|
|
@@ -75,6 +89,41 @@ required_checks:
|
|
|
75
89
|
condition: "Skipped when no Python/Markdown files changed in the PR diff"
|
|
76
90
|
rationale: "Prevents AI-generated slop patterns from entering the codebase (OMN-2972)"
|
|
77
91
|
|
|
92
|
+
- name: "Detect Secrets"
|
|
93
|
+
workflow: ci.yml
|
|
94
|
+
job_id: detect-secrets
|
|
95
|
+
conditional: false
|
|
96
|
+
rationale: >-
|
|
97
|
+
OMN-18669. Judges the tracked set against .secrets.baseline with
|
|
98
|
+
detect-secrets-hook. Gates merges through the required CI Summary
|
|
99
|
+
context, which needs: this job and accepts only a success result --
|
|
100
|
+
skipped, cancelled and failure all block. Its selection and exclusions
|
|
101
|
+
are identical to the detect-secrets pre-commit hook by construction;
|
|
102
|
+
tests/unit/test_validate_ci_precommit_alignment.py fails if the pair
|
|
103
|
+
drifts apart.
|
|
104
|
+
|
|
105
|
+
- name: "Shape-Gate Independence (OMN-20298)"
|
|
106
|
+
workflow: ci.yml
|
|
107
|
+
job_id: shape-gate-independence
|
|
108
|
+
conditional: false
|
|
109
|
+
rationale: >-
|
|
110
|
+
OMN-20298. Refuses any shape-gate detector job that depends on the
|
|
111
|
+
change-control preflight. Unconditional (no needs, no if); gates merges
|
|
112
|
+
through the required CI Summary context, which needs: this job and
|
|
113
|
+
accepts only a success result.
|
|
114
|
+
|
|
115
|
+
- name: "Canonical File Shape (OMN-20304)"
|
|
116
|
+
workflow: ci.yml
|
|
117
|
+
job_id: canonical-file-shape
|
|
118
|
+
conditional: false
|
|
119
|
+
rationale: >-
|
|
120
|
+
OMN-20304. Refuses a new code file outside the canonical locations, new
|
|
121
|
+
imperative SKILL.md lines and any new baseline, allowlist or suppression
|
|
122
|
+
entry, against the shrink-only
|
|
123
|
+
.onex_ratchets/canonical_file_shape_baseline.txt. Gates merges through
|
|
124
|
+
the required CI Summary context, which needs: this job and accepts only a
|
|
125
|
+
success result.
|
|
126
|
+
|
|
78
127
|
# -- Phase 2: Full Test Suite ------------------------------------------------
|
|
79
128
|
|
|
80
129
|
- name: "Tests"
|
|
@@ -21,11 +21,21 @@
|
|
|
21
21
|
# workflow is NOT a required status check on dev, so narrowing it cannot
|
|
22
22
|
# wedge branch protection (verified live via required_status_checks readback
|
|
23
23
|
# before landing).
|
|
24
|
+
# OMN-19216 (2026-09-22): RE-ADD `ready_for_review` to the pull_request
|
|
25
|
+
# trigger, by operator decision. OMN-14777 dropped it because the ready
|
|
26
|
+
# flip force-armed PRs someone meant to hold; since then a PR opened as a
|
|
27
|
+
# draft was never armed by its flip and needed a manual arming step.
|
|
28
|
+
# This repository has no OMN-18179 hold gate; the author gate below and
|
|
29
|
+
# the already-armed guard are what bound arming on the flip.
|
|
30
|
+
# Arming stays limited to the allowed author (the resolve step reads the
|
|
31
|
+
# PR author from the payload, not the sender who flipped it), and the
|
|
32
|
+
# Enable step returns early when the PR is already armed, so a ready flip
|
|
33
|
+
# racing a check_suite or review event cannot arm twice.
|
|
24
34
|
name: Auto-Merge
|
|
25
35
|
|
|
26
36
|
on:
|
|
27
37
|
pull_request:
|
|
28
|
-
types: [opened]
|
|
38
|
+
types: [opened, ready_for_review]
|
|
29
39
|
pull_request_review:
|
|
30
40
|
types: [submitted, dismissed]
|
|
31
41
|
check_suite:
|
|
@@ -41,6 +51,22 @@ permissions:
|
|
|
41
51
|
contents: write
|
|
42
52
|
pull-requests: write
|
|
43
53
|
|
|
54
|
+
# OMN-19216: one arming run per PR at a time. A newer event queues behind
|
|
55
|
+
# a running one instead of racing it; the already-armed guard makes the
|
|
56
|
+
# queued run a no-op. Every arming path carries a PR number. The constant
|
|
57
|
+
# fallback covers only a check_suite with no associated PR, which the
|
|
58
|
+
# resolve step skips, and it keeps those in one group rather than giving
|
|
59
|
+
# each run a unique key that would serialize nothing.
|
|
60
|
+
concurrency:
|
|
61
|
+
group: >-
|
|
62
|
+
${{ github.workflow }}-${{
|
|
63
|
+
github.event.pull_request.number ||
|
|
64
|
+
github.event.inputs.pr_number ||
|
|
65
|
+
github.event.check_suite.pull_requests[0].number ||
|
|
66
|
+
'no-pr'
|
|
67
|
+
}}
|
|
68
|
+
cancel-in-progress: false
|
|
69
|
+
|
|
44
70
|
jobs:
|
|
45
71
|
auto-merge:
|
|
46
72
|
name: Enable Auto-Merge
|
|
@@ -96,6 +122,14 @@ jobs:
|
|
|
96
122
|
PR: ${{ steps.resolve.outputs.pr }}
|
|
97
123
|
run: |
|
|
98
124
|
set -euo pipefail
|
|
125
|
+
# OMN-19216: a ready flip, a check_suite completion and a review can each
|
|
126
|
+
# reach this step for one PR. An already-armed PR is left alone rather
|
|
127
|
+
# than armed a second time.
|
|
128
|
+
armed="$(gh pr view "$PR" --repo "$GH_REPO" --json autoMergeRequest --jq '.autoMergeRequest != null')"
|
|
129
|
+
if [ "$armed" = "true" ]; then
|
|
130
|
+
echo "PR #${PR} is already armed; not arming again (OMN-19216)."
|
|
131
|
+
exit 0
|
|
132
|
+
fi
|
|
99
133
|
# OMN-13138/13214: on a queue-controlled branch the merge method is
|
|
100
134
|
# set by the merge queue, so passing an explicit --squash is
|
|
101
135
|
# rejected ("The merge strategy for dev is set by the merge queue")
|
|
@@ -33,6 +33,10 @@ on:
|
|
|
33
33
|
# left byte-unchanged for whatever still calls it. Precedent and shape:
|
|
34
34
|
# omnibase_core#1703 and omnibase_spi#308, under OMN-18658.
|
|
35
35
|
|
|
36
|
+
concurrency:
|
|
37
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
|
38
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
39
|
+
|
|
36
40
|
jobs:
|
|
37
41
|
auto-tag:
|
|
38
42
|
if: >-
|
{omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/ban-hardcoded-runner-ip.yml
RENAMED
|
@@ -22,11 +22,16 @@ on:
|
|
|
22
22
|
- tests/**
|
|
23
23
|
merge_group:
|
|
24
24
|
|
|
25
|
+
concurrency:
|
|
26
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
|
27
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
28
|
+
|
|
25
29
|
jobs:
|
|
26
30
|
ban-hardcoded-runner-ip:
|
|
27
31
|
# OMN-17993: pinned to an exact SHA, not @main. omniclaude main lags dev by
|
|
28
32
|
# design (release-synced), so @main still resolves to the pre-widening scanner
|
|
29
33
|
# body that scans workflow files only and exits 0 on a tests-only diff.
|
|
30
|
-
uses: OmniNode-ai/omniclaude/.github/workflows/ban-hardcoded-runner-ip.yml@
|
|
34
|
+
uses: OmniNode-ai/omniclaude/.github/workflows/ban-hardcoded-runner-ip.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
|
|
31
35
|
permissions:
|
|
32
36
|
contents: read
|
|
37
|
+
pull-requests: read
|
|
@@ -100,15 +100,17 @@ jobs:
|
|
|
100
100
|
github.actor != 'renovate[bot]' &&
|
|
101
101
|
(contains(github.event.pull_request.title, 'OMN-') ||
|
|
102
102
|
contains(github.event.pull_request.head.ref, 'OMN-'))
|
|
103
|
-
# OMN-
|
|
104
|
-
#
|
|
105
|
-
#
|
|
106
|
-
#
|
|
107
|
-
#
|
|
108
|
-
uses
|
|
103
|
+
# OMN-20001: the reusable and the omnimarket publisher it sources are both
|
|
104
|
+
# pinned to immutable revs (omniclaude 2a4123cf, omnimarket v0.4.276), never
|
|
105
|
+
# a sibling's live branch, so a merge there cannot turn this repo red.
|
|
106
|
+
# Bump both together in a consumer PR after an integration test of the new
|
|
107
|
+
# revs; tests/unit/test_workflow_sibling_pins.py fails closed on any
|
|
108
|
+
# sibling `uses:` / checkout without a 40-hex rev.
|
|
109
|
+
uses: OmniNode-ai/omniclaude/.github/workflows/call-occ-autobind-reusable.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
|
|
109
110
|
secrets: inherit
|
|
110
111
|
with:
|
|
111
112
|
lane: dev
|
|
113
|
+
omnimarket-ref: e11987165b960cb86cdeab7d0ad3fe1884bb2572 # omnimarket v0.4.276
|
|
112
114
|
|
|
113
115
|
occ-autobind-manual-replay:
|
|
114
116
|
# OMN-14993: manual re-publish entrypoint, gated to the workflow_dispatch
|
|
@@ -160,7 +162,7 @@ jobs:
|
|
|
160
162
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
161
163
|
with:
|
|
162
164
|
repository: OmniNode-ai/omnimarket
|
|
163
|
-
ref:
|
|
165
|
+
ref: e11987165b960cb86cdeab7d0ad3fe1884bb2572 # omnimarket v0.4.276
|
|
164
166
|
path: .occ-autobind-src
|
|
165
167
|
persist-credentials: false
|
|
166
168
|
sparse-checkout: |
|
{omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/call-occ-companion-effect.yml
RENAMED
|
@@ -157,7 +157,7 @@ jobs:
|
|
|
157
157
|
github.actor != 'renovate[bot]' &&
|
|
158
158
|
(contains(github.event.pull_request.title, 'OMN-') ||
|
|
159
159
|
contains(github.event.pull_request.head.ref, 'OMN-'))
|
|
160
|
-
uses: OmniNode-ai/omniclaude/.github/workflows/call-occ-companion-effect-reusable.yml@
|
|
160
|
+
uses: OmniNode-ai/omniclaude/.github/workflows/call-occ-companion-effect-reusable.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
|
|
161
161
|
# OMN-18012: the dev lane declares SASL_PLAINTEXT/SCRAM-SHA-256, so the
|
|
162
162
|
# publisher needs the KAFKA_SASL_* credentials. The broker is still
|
|
163
163
|
# resolved from omnimarket's committed overlay, never from a secret.
|
|
@@ -167,6 +167,7 @@ jobs:
|
|
|
167
167
|
secrets: inherit # pragma: allowlist secret
|
|
168
168
|
with:
|
|
169
169
|
lane: dev
|
|
170
|
+
omnimarket-ref: e11987165b960cb86cdeab7d0ad3fe1884bb2572 # omnimarket v0.4.276
|
|
170
171
|
|
|
171
172
|
occ-companion-effect-manual-replay:
|
|
172
173
|
# OMN-14993: manual re-publish entrypoint, gated to the workflow_dispatch
|
|
@@ -226,7 +227,7 @@ jobs:
|
|
|
226
227
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
227
228
|
with:
|
|
228
229
|
repository: OmniNode-ai/omnimarket
|
|
229
|
-
ref:
|
|
230
|
+
ref: e11987165b960cb86cdeab7d0ad3fe1884bb2572 # omnimarket v0.4.276
|
|
230
231
|
path: .occ-companion-effect-src
|
|
231
232
|
persist-credentials: false
|
|
232
233
|
sparse-checkout: |
|
|
@@ -18,11 +18,15 @@ on:
|
|
|
18
18
|
branches: [main, dev]
|
|
19
19
|
merge_group:
|
|
20
20
|
|
|
21
|
+
concurrency:
|
|
22
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
|
23
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
24
|
+
|
|
21
25
|
permissions:
|
|
22
26
|
contents: read
|
|
23
27
|
pull-requests: read
|
|
24
28
|
|
|
25
29
|
jobs:
|
|
26
30
|
call-reject-skip-token:
|
|
27
|
-
uses: OmniNode-ai/omniclaude/.github/workflows/reject-deploy-gate-skip.yml@
|
|
31
|
+
uses: OmniNode-ai/omniclaude/.github/workflows/reject-deploy-gate-skip.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
|
|
28
32
|
secrets: inherit
|
|
@@ -10,6 +10,10 @@ on:
|
|
|
10
10
|
merge_group:
|
|
11
11
|
workflow_dispatch:
|
|
12
12
|
|
|
13
|
+
concurrency:
|
|
14
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
|
15
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
16
|
+
|
|
13
17
|
jobs:
|
|
14
18
|
check-handshake:
|
|
15
19
|
name: Check architecture handshake
|
|
@@ -24,9 +28,8 @@ jobs:
|
|
|
24
28
|
uses: actions/checkout@v7
|
|
25
29
|
with:
|
|
26
30
|
repository: OmniNode-ai/omnibase_core
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
ref: 330a344cdb9c5dedd04a46dfbb0b63dae0baccfb
|
|
31
|
+
# Auto-bumped by omnibase_core publish-downstream-pin-bump.yml to 2f90bd814b14.
|
|
32
|
+
ref: 2f90bd814b140ed8f8dad74cc499b0976807e47d
|
|
30
33
|
path: omnibase_core
|
|
31
34
|
|
|
32
35
|
- name: Verify omnibase_core checkout
|
|
@@ -8,6 +8,8 @@ on:
|
|
|
8
8
|
branches: [main, 'hotfix/**']
|
|
9
9
|
pull_request:
|
|
10
10
|
branches: [main, dev]
|
|
11
|
+
# OMN-18854: marking a draft ready must re-evaluate evidence admission.
|
|
12
|
+
types: [opened, synchronize, reopened, ready_for_review]
|
|
11
13
|
merge_group:
|
|
12
14
|
workflow_dispatch:
|
|
13
15
|
|
|
@@ -21,6 +23,37 @@ env:
|
|
|
21
23
|
CACHE_VERSION: "0.1.0"
|
|
22
24
|
|
|
23
25
|
jobs:
|
|
26
|
+
# OMN-18854: the existing eligibility validator must feed the required
|
|
27
|
+
# CI Summary. Other validations remain independent of this evidence gate.
|
|
28
|
+
occ-preflight:
|
|
29
|
+
if: github.event_name == 'pull_request' || github.event_name == 'merge_group'
|
|
30
|
+
permissions:
|
|
31
|
+
contents: read
|
|
32
|
+
pull-requests: read
|
|
33
|
+
uses: OmniNode-ai/omnibase_core/.github/workflows/occ-preflight.yml@13ceae69c246a33c9fc8fc4b33f83fb66b89edc6
|
|
34
|
+
with:
|
|
35
|
+
core-ref: 13ceae69c246a33c9fc8fc4b33f83fb66b89edc6
|
|
36
|
+
contracts-dir: contracts
|
|
37
|
+
receipts-dir: drift/dod_receipts
|
|
38
|
+
|
|
39
|
+
# OMN-18854: evidence admission has its own verdict; shape detectors and
|
|
40
|
+
# their result aggregation do not branch directly on the evidence preflight.
|
|
41
|
+
occ-eligibility:
|
|
42
|
+
name: OCC Eligibility Admission
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
needs: occ-preflight
|
|
45
|
+
if: always()
|
|
46
|
+
steps:
|
|
47
|
+
- name: Require eligible evidence on admission events
|
|
48
|
+
run: |
|
|
49
|
+
event="${{ github.event_name }}"
|
|
50
|
+
if [[ "$event" == "pull_request" || "$event" == "merge_group" ]]; then
|
|
51
|
+
if [[ "${{ needs.occ-preflight.result }}" != "success" ]]; then
|
|
52
|
+
echo "::error::occ-preflight did not pass (result: ${{ needs.occ-preflight.result }})"
|
|
53
|
+
exit 1
|
|
54
|
+
fi
|
|
55
|
+
fi
|
|
56
|
+
|
|
24
57
|
# =============================================================================
|
|
25
58
|
# JOB ORDERING RATIONALE (Fail-Fast Optimization)
|
|
26
59
|
# =============================================================================
|
|
@@ -150,7 +183,7 @@ jobs:
|
|
|
150
183
|
onex-validation:
|
|
151
184
|
name: ONEX Validation
|
|
152
185
|
runs-on: ubuntu-latest
|
|
153
|
-
timeout-minutes:
|
|
186
|
+
timeout-minutes: 30
|
|
154
187
|
|
|
155
188
|
steps:
|
|
156
189
|
- name: Checkout code
|
|
@@ -162,6 +195,9 @@ jobs:
|
|
|
162
195
|
- name: Install dependencies
|
|
163
196
|
run: uv sync --locked --reinstall-package omnibase-core --reinstall-package omnibase-spi --reinstall-package omnibase-infra
|
|
164
197
|
|
|
198
|
+
- name: Run the whole-tree pre-commit suite
|
|
199
|
+
run: uv run pre-commit run --all-files --show-diff-on-failure
|
|
200
|
+
|
|
165
201
|
# SYNC: Pre-commit hook 'validate-pydantic-patterns' at pre-commit stage
|
|
166
202
|
- name: Validate Pydantic patterns
|
|
167
203
|
run: uv run python scripts/validation/validate_pydantic_patterns.py src/
|
|
@@ -202,6 +238,37 @@ jobs:
|
|
|
202
238
|
- name: Validate no silent env fallbacks
|
|
203
239
|
run: uv run python scripts/validation/validate_no_env_fallbacks.py
|
|
204
240
|
|
|
241
|
+
# SYNC: Pre-commit hook 'validate-model-locations' at pre-commit stage
|
|
242
|
+
- name: Validate model locations
|
|
243
|
+
run: uv run python scripts/validation/validate_model_locations.py src/
|
|
244
|
+
|
|
245
|
+
# SYNC: Pre-commit hook 'no-hardcoded-bolt-fallback' at pre-commit stage
|
|
246
|
+
- name: Validate no hardcoded bolt fallback (whole-tree backstop)
|
|
247
|
+
run: bash scripts/check_no_hardcoded_bolt.sh
|
|
248
|
+
|
|
249
|
+
# SYNC: Pre-commit hook 'kafka-no-hardcoded-fallback' at pre-commit stage
|
|
250
|
+
- name: Validate no hardcoded Kafka fallback (whole-tree backstop)
|
|
251
|
+
run: bash scripts/validation/check_kafka_no_hardcoded_fallback.sh
|
|
252
|
+
|
|
253
|
+
# SYNC: Pre-commit hook 'no-internal-ips' at pre-commit stage
|
|
254
|
+
- name: Validate no internal IPs (whole-tree backstop)
|
|
255
|
+
run: bash scripts/validation/check_no_internal_ips.sh
|
|
256
|
+
|
|
257
|
+
# CI counterpart of the no-git-precommit-additional-dependencies hook.
|
|
258
|
+
- name: Pre-commit dependencies come from package indexes (OMN-19666)
|
|
259
|
+
run: bash tests/test_precommit_additional_dependencies_omn19666.sh
|
|
260
|
+
|
|
261
|
+
# OMN-18854: the same focused regression runs before commit and in CI.
|
|
262
|
+
- name: Verify OCC eligibility enforcement (OMN-18854)
|
|
263
|
+
run: uv run pytest tests/scripts/test_occ_eligibility_enforcement.py -q
|
|
264
|
+
|
|
265
|
+
# SYNC: Pre-commit hook 'validate-gitignore-baseline' at pre-commit stage (OMN-18033)
|
|
266
|
+
# This step and the hook both pin released omnibase-core==0.47.23,
|
|
267
|
+
# matching uv.lock and carrying the packaged baseline spec; move them together.
|
|
268
|
+
# OMN-19666: do not use git+ URLs for this validator.
|
|
269
|
+
- name: Validate gitignore baseline (OMN-18033)
|
|
270
|
+
run: uv run --isolated --no-project --with "omnibase-core==0.47.23" python -m omnibase_core.validators.gitignore_baseline .
|
|
271
|
+
|
|
205
272
|
- name: ONEX validation summary
|
|
206
273
|
if: always()
|
|
207
274
|
run: |
|
|
@@ -218,6 +285,9 @@ jobs:
|
|
|
218
285
|
echo "- Kafka import boundary enforcement (ARCH-002)" >> $GITHUB_STEP_SUMMARY
|
|
219
286
|
echo "- Pydantic model location enforcement" >> $GITHUB_STEP_SUMMARY
|
|
220
287
|
echo "- No silent env fallbacks (OMN-10735)" >> $GITHUB_STEP_SUMMARY
|
|
288
|
+
echo "- No hardcoded bolt fallback" >> $GITHUB_STEP_SUMMARY
|
|
289
|
+
echo "- No hardcoded Kafka fallback" >> $GITHUB_STEP_SUMMARY
|
|
290
|
+
echo "- No hardcoded internal IPs" >> $GITHUB_STEP_SUMMARY
|
|
221
291
|
|
|
222
292
|
# Phase 1 - Transport Import Guard (ARCH-002)
|
|
223
293
|
# SYNC: Pre-commit hook 'validate-no-transport-imports' (omnibase_core remote hook)
|
|
@@ -309,10 +379,21 @@ jobs:
|
|
|
309
379
|
# Uses default GITHUB_TOKEN which has read access to public repos in the org.
|
|
310
380
|
# Same pattern as omniclaude ci-cd.yml. If omnibase_core becomes private,
|
|
311
381
|
# add: token: ${{ secrets.OMNIBASE_CORE_ACCESS_TOKEN }}
|
|
382
|
+
# OMN-20001: read the omnibase_core rev this repo has PINNED (the one the
|
|
383
|
+
# omnibase_core downstream pin-bump bot maintains in check-handshake.yml),
|
|
384
|
+
# never core's live default branch.
|
|
385
|
+
- name: Resolve pinned omnibase_core rev
|
|
386
|
+
id: core-pin
|
|
387
|
+
run: |
|
|
388
|
+
rev="$(grep -E '^[[:space:]]+ref: [0-9a-f]{40}$' .github/workflows/check-handshake.yml | awk '{print $2}')"
|
|
389
|
+
[[ "$rev" =~ ^[0-9a-f]{40}$ ]] || { echo "::error::no single pinned omnibase_core rev in check-handshake.yml"; exit 1; }
|
|
390
|
+
echo "rev=$rev" >> "$GITHUB_OUTPUT"
|
|
391
|
+
|
|
312
392
|
- name: Checkout omnibase_core
|
|
313
393
|
uses: actions/checkout@v7
|
|
314
394
|
with:
|
|
315
395
|
repository: OmniNode-ai/omnibase_core
|
|
396
|
+
ref: ${{ steps.core-pin.outputs.rev }}
|
|
316
397
|
path: omnibase_core
|
|
317
398
|
|
|
318
399
|
- name: Verify handshake is current
|
|
@@ -571,10 +652,20 @@ jobs:
|
|
|
571
652
|
if: github.event_name == 'pull_request' || github.event_name == 'merge_group' || github.event_name == 'push'
|
|
572
653
|
steps:
|
|
573
654
|
- uses: actions/checkout@v7
|
|
655
|
+
# OMN-20001: read the onex_change_control rev pinned in pyproject.toml,
|
|
656
|
+
# never OCC's live default branch.
|
|
657
|
+
- name: Resolve pinned onex_change_control rev
|
|
658
|
+
id: occ-pin
|
|
659
|
+
run: |
|
|
660
|
+
rev="$(grep -oE 'onex_change_control\.git@[0-9a-f]{40}' pyproject.toml | head -1 | cut -d@ -f2)"
|
|
661
|
+
[[ "$rev" =~ ^[0-9a-f]{40}$ ]] || { echo "::error::no pinned onex_change_control rev in pyproject.toml"; exit 1; }
|
|
662
|
+
echo "rev=$rev" >> "$GITHUB_OUTPUT"
|
|
663
|
+
|
|
574
664
|
- name: Checkout onex_change_control
|
|
575
665
|
uses: actions/checkout@v7
|
|
576
666
|
with:
|
|
577
667
|
repository: OmniNode-ai/onex_change_control
|
|
668
|
+
ref: ${{ steps.occ-pin.outputs.rev }}
|
|
578
669
|
path: onex_change_control
|
|
579
670
|
|
|
580
671
|
- uses: astral-sh/setup-uv@v7
|
|
@@ -618,21 +709,198 @@ jobs:
|
|
|
618
709
|
- name: Ratchet non-canonical lifecycle-word classes against frozen allowlist (OMN-14350)
|
|
619
710
|
run: |
|
|
620
711
|
uv run --no-project \
|
|
621
|
-
--with 'omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@
|
|
712
|
+
--with 'omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@f50d00fc7918d0b12ccd0d3497160325e32e7ac5' \
|
|
622
713
|
python -m omnibase_core.validators.no_noncanonical_lifecycle_classes \
|
|
623
714
|
--check-stale \
|
|
624
715
|
--allowlist .onex_ratchets/noncanonical_class_allowlist.yaml \
|
|
625
716
|
src/omnimemory
|
|
626
717
|
|
|
718
|
+
shape-gate-independence:
|
|
719
|
+
name: Shape-Gate Independence (OMN-20298)
|
|
720
|
+
# OMN-20298: no shape-gate detector may depend on the change-control preflight.
|
|
721
|
+
# Unconditional (no needs, no if); wired into required CI Summary via needs: +
|
|
722
|
+
# strict success-only verdict check.
|
|
723
|
+
runs-on: ubuntu-latest
|
|
724
|
+
timeout-minutes: 10
|
|
725
|
+
steps:
|
|
726
|
+
- name: Checkout code
|
|
727
|
+
uses: actions/checkout@v7
|
|
728
|
+
- name: Set up Python
|
|
729
|
+
uses: actions/setup-python@v7
|
|
730
|
+
with:
|
|
731
|
+
python-version: "3.12"
|
|
732
|
+
- name: Install uv
|
|
733
|
+
uses: astral-sh/setup-uv@v7
|
|
734
|
+
with:
|
|
735
|
+
version: "0.8.3"
|
|
736
|
+
- name: Refuse shape-gate detectors that depend on the preflight (OMN-20298)
|
|
737
|
+
run: |
|
|
738
|
+
uv run --no-project \
|
|
739
|
+
--with 'omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@7f20b97895f01996c5858dde385ba8991c06e708' \
|
|
740
|
+
python -m omnibase_core.handlers.handler_shape_gate_independence
|
|
741
|
+
|
|
742
|
+
# ============================================================================
|
|
743
|
+
# Detect Secrets - the CI half of the .secrets.baseline gate (OMN-18669)
|
|
744
|
+
# ============================================================================
|
|
745
|
+
# This repository carried a committed `.secrets.baseline` that NO hook and NO
|
|
746
|
+
# workflow read. Measured 2026-09-18 (integration probe R9): the file was
|
|
747
|
+
# present, the repository looked protected, and a full scan against it
|
|
748
|
+
# surfaced 47 findings in 18 files nothing had ever been asked to approve.
|
|
749
|
+
# Nobody had loosened a gate -- there was no gate.
|
|
750
|
+
#
|
|
751
|
+
# Uses detect-secrets-hook, which compares findings to the baseline on the
|
|
752
|
+
# full equality model (hashed_secret + type) and exits non-zero only for
|
|
753
|
+
# findings NOT already baselined. Same pin, same baseline and the same
|
|
754
|
+
# exclusions as the `detect-secrets` pre-commit hook in
|
|
755
|
+
# .pre-commit-config.yaml -- if the two selections differ, a commit passes
|
|
756
|
+
# locally and this check fails, or worse, the reverse.
|
|
757
|
+
#
|
|
758
|
+
# Wired into the required `CI Summary` context through needs: below, with a
|
|
759
|
+
# strict success-only verdict, so it gates merges rather than advising.
|
|
760
|
+
detect-secrets:
|
|
761
|
+
name: Detect Secrets
|
|
762
|
+
runs-on: ubuntu-latest
|
|
763
|
+
timeout-minutes: 5
|
|
764
|
+
|
|
765
|
+
steps:
|
|
766
|
+
- name: Checkout code
|
|
767
|
+
uses: actions/checkout@v7
|
|
768
|
+
|
|
769
|
+
- name: Set up Python
|
|
770
|
+
uses: actions/setup-python@v7
|
|
771
|
+
with:
|
|
772
|
+
python-version: "3.12"
|
|
773
|
+
|
|
774
|
+
# detect-secrets is a CI-only scanning tool, not a project dependency.
|
|
775
|
+
# Installed via pip (not uv) because it is not declared in pyproject.toml.
|
|
776
|
+
- name: Install detect-secrets
|
|
777
|
+
run: pip install detect-secrets==1.5.0
|
|
778
|
+
|
|
779
|
+
- name: Run detect-secrets-hook
|
|
780
|
+
run: |
|
|
781
|
+
# -n/--no-verify (OMN-15063): several plugins (SlackDetector,
|
|
782
|
+
# StripeDetector, ...) call the live vendor API to "verify" each
|
|
783
|
+
# regex-matched candidate, then silently drop anything that comes
|
|
784
|
+
# back VERIFIED_FALSE. A negative or uncertain live-verification
|
|
785
|
+
# result must not silently remove a finding (fail-closed). Never
|
|
786
|
+
# remove this flag without re-proving the miss is fixed another way.
|
|
787
|
+
set +e
|
|
788
|
+
git ls-files -z | xargs -0 detect-secrets-hook \
|
|
789
|
+
--no-verify \
|
|
790
|
+
--baseline .secrets.baseline \
|
|
791
|
+
--exclude-files 'uv\.lock' \
|
|
792
|
+
--exclude-files 'hardcoded_model_config_baseline\.yaml' \
|
|
793
|
+
--exclude-files '\.venv/' \
|
|
794
|
+
--exclude-files 'tests/fixtures/' \
|
|
795
|
+
--exclude-files '\.git/' \
|
|
796
|
+
--exclude-files '\.secrets\.baseline' \
|
|
797
|
+
--exclude-files '\.github/workflows/.*\.ya?ml' # workflow YAML legitimately references the secrets context
|
|
798
|
+
HOOK_EXIT=$?
|
|
799
|
+
set -e
|
|
800
|
+
|
|
801
|
+
if [[ $HOOK_EXIT -eq 0 ]]; then
|
|
802
|
+
echo "## Secrets Scan" >> $GITHUB_STEP_SUMMARY
|
|
803
|
+
echo "No new secrets detected (all findings are baselined)." >> $GITHUB_STEP_SUMMARY
|
|
804
|
+
else
|
|
805
|
+
echo "## New Secrets Detected" >> $GITHUB_STEP_SUMMARY
|
|
806
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
807
|
+
echo "Findings are present that .secrets.baseline does not carry." >> $GITHUB_STEP_SUMMARY
|
|
808
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
809
|
+
echo "If they are real, remove them and rotate under the credential-rotation" >> $GITHUB_STEP_SUMMARY
|
|
810
|
+
echo "runbook. If they are false positives, audit them into the baseline:" >> $GITHUB_STEP_SUMMARY
|
|
811
|
+
echo '```' >> $GITHUB_STEP_SUMMARY
|
|
812
|
+
echo 'detect-secrets scan --no-verify --exclude-files "uv\.lock" --exclude-files "\.venv/" --exclude-files "tests/fixtures/" --exclude-files "\.git/" --exclude-files "\.secrets\.baseline" --exclude-files "\.github/workflows/.*\.ya?ml" --force-use-all-plugins > .secrets.baseline' >> $GITHUB_STEP_SUMMARY
|
|
813
|
+
echo 'detect-secrets audit .secrets.baseline' >> $GITHUB_STEP_SUMMARY
|
|
814
|
+
echo '```' >> $GITHUB_STEP_SUMMARY
|
|
815
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
816
|
+
echo "Never loosen the hook or widen the exclusions to clear this." >> $GITHUB_STEP_SUMMARY
|
|
817
|
+
exit $HOOK_EXIT
|
|
818
|
+
fi
|
|
819
|
+
|
|
820
|
+
# Canonical-file-shape ratchet (OMN-20304). Operator ruling 2026-10-01: no
|
|
821
|
+
# new scripts, plugins or exceptions in any repository. Refuses a new code
|
|
822
|
+
# file outside src/<pkg>/{nodes,handlers,models,protocols,contracts,enums}/,
|
|
823
|
+
# tests/ and docs/, new imperative lines in a SKILL.md, and any new baseline,
|
|
824
|
+
# allowlist, waiver or suppression entry. Existing files sit in the
|
|
825
|
+
# shrink-only .onex_ratchets/canonical_file_shape_baseline.txt. Same module
|
|
826
|
+
# and same omnibase_core commit as the canonical-file-shape pre-commit hook.
|
|
827
|
+
# Unconditional: no `if:`, no `needs:`. The positive-control step plants a
|
|
828
|
+
# bad sample on every run and fails unless the ratchet refuses it.
|
|
829
|
+
canonical-file-shape:
|
|
830
|
+
name: Canonical File Shape (OMN-20304)
|
|
831
|
+
runs-on: ubuntu-latest
|
|
832
|
+
timeout-minutes: 15
|
|
833
|
+
env:
|
|
834
|
+
CANONICAL_FILE_SHAPE_CORE: "omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@f50d00fc7918d0b12ccd0d3497160325e32e7ac5"
|
|
835
|
+
steps:
|
|
836
|
+
- name: Checkout code
|
|
837
|
+
uses: actions/checkout@v7
|
|
838
|
+
with:
|
|
839
|
+
fetch-depth: 0
|
|
840
|
+
- name: Set up Python
|
|
841
|
+
uses: actions/setup-python@v7
|
|
842
|
+
with:
|
|
843
|
+
python-version: "3.12"
|
|
844
|
+
- name: Install uv
|
|
845
|
+
uses: astral-sh/setup-uv@v7
|
|
846
|
+
with:
|
|
847
|
+
version: "0.8.3"
|
|
848
|
+
- name: Positive control (planted bad sample refused, clean sample accepted)
|
|
849
|
+
run: |
|
|
850
|
+
set -u
|
|
851
|
+
ratchet() {
|
|
852
|
+
uv run --no-project --with "$CANONICAL_FILE_SHAPE_CORE" \
|
|
853
|
+
python -m omnibase_core.validators.canonical_file_shape "$@"
|
|
854
|
+
}
|
|
855
|
+
mkdir -p bin tests
|
|
856
|
+
printf '#!/bin/sh\necho planted\n' > bin/zz_canary_planted
|
|
857
|
+
git add bin/zz_canary_planted
|
|
858
|
+
if ratchet; then
|
|
859
|
+
echo "POSITIVE CONTROL FAILED: planted bin/zz_canary_planted was accepted"
|
|
860
|
+
exit 1
|
|
861
|
+
fi
|
|
862
|
+
echo "positive control: planted bad sample refused"
|
|
863
|
+
git rm -q --cached bin/zz_canary_planted
|
|
864
|
+
rm bin/zz_canary_planted
|
|
865
|
+
printf 'def test_canary() -> None:\n assert True\n' > tests/zz_canary_clean.py
|
|
866
|
+
git add tests/zz_canary_clean.py
|
|
867
|
+
ratchet
|
|
868
|
+
echo "positive control: clean sample accepted"
|
|
869
|
+
git rm -q --cached tests/zz_canary_clean.py
|
|
870
|
+
rm tests/zz_canary_clean.py
|
|
871
|
+
- name: Refuse new non-canonical files and new exceptions
|
|
872
|
+
env:
|
|
873
|
+
PR_BASE: ${{ github.event.pull_request.base.sha }}
|
|
874
|
+
MQ_BASE: ${{ github.event.merge_group.base_sha }}
|
|
875
|
+
PUSH_BEFORE: ${{ github.event.before }}
|
|
876
|
+
run: |
|
|
877
|
+
set -u
|
|
878
|
+
base="${PR_BASE:-${MQ_BASE:-${PUSH_BEFORE:-}}}"
|
|
879
|
+
if [ -n "$base" ] && git cat-file -e "${base}^{commit}" 2>/dev/null; then
|
|
880
|
+
base="$(git merge-base "$base" HEAD)"
|
|
881
|
+
uv run --no-project --with "$CANONICAL_FILE_SHAPE_CORE" \
|
|
882
|
+
python -m omnibase_core.validators.canonical_file_shape --base "$base" --head HEAD
|
|
883
|
+
else
|
|
884
|
+
echo "no base revision on this event; checking the tree against the baseline only"
|
|
885
|
+
uv run --no-project --with "$CANONICAL_FILE_SHAPE_CORE" \
|
|
886
|
+
python -m omnibase_core.validators.canonical_file_shape --head HEAD
|
|
887
|
+
fi
|
|
888
|
+
|
|
627
889
|
ci-summary:
|
|
628
890
|
name: CI Summary
|
|
629
891
|
runs-on: ubuntu-latest
|
|
630
|
-
needs: [migration-freeze, lint, pyright, onex-validation, transport-import-guard, contract-validation, io-audit, check-handshake, test-select, tests-gate, compliance, contract-compliance, no-noncanonical-lifecycle-classes]
|
|
892
|
+
needs: [migration-freeze, lint, pyright, onex-validation, transport-import-guard, contract-validation, io-audit, check-handshake, test-select, tests-gate, compliance, contract-compliance, no-noncanonical-lifecycle-classes, detect-secrets, shape-gate-independence, canonical-file-shape, occ-eligibility]
|
|
631
893
|
if: always()
|
|
632
894
|
|
|
633
895
|
steps:
|
|
634
896
|
- name: Check test results
|
|
635
897
|
run: |
|
|
898
|
+
# OMN-18854: require the admission verdict on every event. That job
|
|
899
|
+
# judges eligibility on PR/queue events and passes non-admission events.
|
|
900
|
+
if [[ "${{ needs.occ-eligibility.result }}" != "success" ]]; then
|
|
901
|
+
echo "::error::occ-eligibility did not pass (result: ${{ needs.occ-eligibility.result }})"
|
|
902
|
+
exit 1
|
|
903
|
+
fi
|
|
636
904
|
# OMN-14350: strict fail-closed gate on the non-canonical lifecycle-class
|
|
637
905
|
# ratchet - only 'success' passes; skipped/cancelled/failure ALL block. It is
|
|
638
906
|
# in needs: so this job WAITS for it (no race).
|
|
@@ -640,6 +908,25 @@ jobs:
|
|
|
640
908
|
echo "::error::no-noncanonical-lifecycle-classes ratchet did not pass (result: ${{ needs.no-noncanonical-lifecycle-classes.result }}) - fail-closed (OMN-14350)"
|
|
641
909
|
exit 1
|
|
642
910
|
fi
|
|
911
|
+
# OMN-20298: strict fail-closed gate on shape-gate independence - only
|
|
912
|
+
# 'success' passes; skipped/cancelled/failure ALL block.
|
|
913
|
+
if [[ "${{ needs.shape-gate-independence.result }}" != "success" ]]; then
|
|
914
|
+
echo "::error::shape-gate-independence did not pass (result: ${{ needs.shape-gate-independence.result }}) - fail-closed (OMN-20298)"
|
|
915
|
+
exit 1
|
|
916
|
+
fi
|
|
917
|
+
# OMN-18669: strict fail-closed gate on the secrets scan - only 'success'
|
|
918
|
+
# passes; skipped/cancelled/failure ALL block. A secrets gate that a
|
|
919
|
+
# skipped job can satisfy is the state this ticket exists to remove.
|
|
920
|
+
if [[ "${{ needs.detect-secrets.result }}" != "success" ]]; then
|
|
921
|
+
echo "::error::detect-secrets did not pass (result: ${{ needs.detect-secrets.result }}) - fail-closed (OMN-18669)"
|
|
922
|
+
exit 1
|
|
923
|
+
fi
|
|
924
|
+
# OMN-20304: strict fail-closed gate on the canonical-file-shape ratchet -
|
|
925
|
+
# only 'success' passes; skipped/cancelled/failure ALL block.
|
|
926
|
+
if [[ "${{ needs.canonical-file-shape.result }}" != "success" ]]; then
|
|
927
|
+
echo "::error::canonical-file-shape ratchet did not pass (result: ${{ needs.canonical-file-shape.result }}) - fail-closed (OMN-20304)"
|
|
928
|
+
exit 1
|
|
929
|
+
fi
|
|
643
930
|
migration_freeze="${{ needs.migration-freeze.result }}"
|
|
644
931
|
lint="${{ needs.lint.result }}"
|
|
645
932
|
pyright="${{ needs.pyright.result }}"
|
|
@@ -95,7 +95,7 @@ jobs:
|
|
|
95
95
|
- name: Run contract validation
|
|
96
96
|
id: validate-contract
|
|
97
97
|
if: steps.resolve-branch.outputs.skip_validation != 'true'
|
|
98
|
-
uses: OmniNode-ai/onex_change_control/.github/actions/validate-contract@
|
|
98
|
+
uses: OmniNode-ai/onex_change_control/.github/actions/validate-contract@725d2967b031d7065efd41d0751f903638202cc1
|
|
99
99
|
with:
|
|
100
100
|
branch-name: ${{ steps.resolve-branch.outputs.resolved_branch }}
|
|
101
101
|
contracts-path: contracts
|
|
@@ -36,6 +36,10 @@ on:
|
|
|
36
36
|
branches: [main, dev]
|
|
37
37
|
merge_group:
|
|
38
38
|
|
|
39
|
+
concurrency:
|
|
40
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
|
41
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
42
|
+
|
|
39
43
|
permissions:
|
|
40
44
|
contents: read
|
|
41
45
|
|