Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions architecture-handshakes/imperative-orchestrator-baseline.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,15 @@ entries:
- H2
owner_ticket: OMN-13493
accepted_rationale: 'Thin (90L) decision handler evaluating an RSD data-fetch-complete result and emitting the next step. The node declares an execution_graph, so traversal is executor-bound rather than handler-driven; no decorative FSM and no handler-side _transition. Accepted as baseline.'
- repo: omnibase_infra
node: node_runner_fleet_maintain_orchestrator
max_handler_path: src/omnibase_infra/nodes/node_runner_fleet_maintain_orchestrator/handlers/handler_runner_fleet_health_verdict_complete.py
line_count: 65
risk_score: 2
finding_codes:
- H2
owner_ticket: OMN-13942
accepted_rationale: 'Thin (65L) decision handler evaluating a classified health verdict and emitting the terminal runner-fleet-maintain-completed event; no decorative FSM and no handler-driven _transition. Increment 1 (detection-only) has 3 payload/event hops (start, snapshot-complete, verdict-complete) with no mutation on any path. Accepted as baseline.'
- repo: omnibase_infra
node: node_scope_workflow_orchestrator
max_handler_path: src/omnibase_infra/nodes/node_scope_workflow_orchestrator/handlers/handler_scope_file_read_complete.py
Expand Down
4 changes: 2 additions & 2 deletions docker/runners/runner-image.lock.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"base_image_digest": "sha256:3ba65aa20f86a0fad9df2b2c259c613df006b2e6d0bfcc8a146afb8c525a9751",
"gh_version": "2.67.0",
"identity_digest": "510420fa4a9f2715947143cf59a72045",
"identity_digest": "bc29a18863d52c583ed367f709364d4e",
"image_version": 5,
"kubectl_version": "1.32.1",
"python_version": "3.12",
"runner_version": "2.334.0",
"shared_env_digest": "ee4f6133e595729fb4c3b68e",
"shared_env_digest": "d115872323933b6fe1490d95",
"shared_env_install_args": "--frozen --all-extras --all-groups --no-install-project",
"uv_version": "0.6.14"
}
2 changes: 2 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,8 @@ node_rsd_data_fetch_effect = "omnibase_infra.nodes.node_rsd_data_fetch_effect"
node_rsd_orchestrator = "omnibase_infra.nodes.node_rsd_orchestrator"
node_rsd_score_compute = "omnibase_infra.nodes.node_rsd_score_compute"
node_rsd_state_reducer = "omnibase_infra.nodes.node_rsd_state_reducer"
node_runner_fleet_health_compute = "omnibase_infra.nodes.node_runner_fleet_health_compute"
node_runner_fleet_maintain_orchestrator = "omnibase_infra.nodes.node_runner_fleet_maintain_orchestrator"
node_runner_health_snapshot_effect = "omnibase_infra.nodes.node_runner_health_snapshot_effect"
node_runner_usage_effect = "omnibase_infra.nodes.node_runner_usage_effect"
node_runtime_error_triage_effect = "omnibase_infra.nodes.node_runtime_error_triage_effect"
Expand Down
4 changes: 4 additions & 0 deletions scripts/check_subscribe_wiring_health.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,10 @@
# not a contract-declared node publisher. The script publishes to this topic to trigger the
# node_baselines_batch_compute effect node. (OMN-11177)
"onex.cmd.omnibase-infra.baselines-batch-compute.v1": "Published by scripts/run_baselines_batch_compute.py CLI trigger, not a contract-declared node | owner: jonah | expiry: 2026-12-01",
# Runner-fleet-maintain tick — triggered by the reused OMN-13915
# runner-fleet-canary 15-min GitHub-hosted schedule (OMN-13942 Increment 1),
# not a contract-declared Kafka publisher.
"onex.cmd.omnibase-infra.runner-fleet-maintain-start.v1": "Triggered by the reused OMN-13915 runner-fleet-canary GHA schedule, not Kafka | owner: jonah | expiry: 2026-12-01",
}

# ---------------------------------------------------------------------------
Expand Down
8 changes: 8 additions & 0 deletions scripts/ci/infra-node-allowlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,14 @@ src/omnibase_infra/nodes/node_rsd_orchestrator/handlers/handler_rsd_initiate.py
src/omnibase_infra/nodes/node_rsd_orchestrator/handlers/handler_rsd_score_complete.py # approved existing infra handler path; new business-domain handlers belong in omnimarket.
src/omnibase_infra/nodes/node_rsd_score_compute/handlers/__init__.py # approved existing infra handler path; new business-domain handlers belong in omnimarket.
src/omnibase_infra/nodes/node_rsd_score_compute/handlers/handler_rsd_score_calculate.py # approved existing infra handler path; new business-domain handlers belong in omnimarket.
src/omnibase_infra/nodes/node_runner_fleet_health_compute/handlers/__init__.py # OMN-13942: runner fleet is an infra domain object (CI runner maintenance), not a market business workflow.
src/omnibase_infra/nodes/node_runner_fleet_health_compute/handlers/handler_runner_fleet_health_evaluate.py # OMN-13942: runner fleet is an infra domain object (CI runner maintenance), not a market business workflow.
src/omnibase_infra/nodes/node_runner_fleet_maintain_orchestrator/handlers/__init__.py # OMN-13942: runner fleet is an infra domain object (CI runner maintenance), not a market business workflow.
src/omnibase_infra/nodes/node_runner_fleet_maintain_orchestrator/handlers/handler_runner_fleet_health_verdict_complete.py # OMN-13942: runner fleet is an infra domain object (CI runner maintenance), not a market business workflow.
src/omnibase_infra/nodes/node_runner_fleet_maintain_orchestrator/handlers/handler_runner_fleet_maintain_start.py # OMN-13942: runner fleet is an infra domain object (CI runner maintenance), not a market business workflow.
src/omnibase_infra/nodes/node_runner_fleet_maintain_orchestrator/handlers/handler_runner_fleet_snapshot_complete.py # OMN-13942: runner fleet is an infra domain object (CI runner maintenance), not a market business workflow.
src/omnibase_infra/nodes/node_runner_health_snapshot_effect/handlers/__init__.py # OMN-13942: runner fleet is an infra domain object (CI runner maintenance), not a market business workflow.
src/omnibase_infra/nodes/node_runner_health_snapshot_effect/handlers/handler_runner_fleet_snapshot.py # OMN-13942: runner fleet is an infra domain object (CI runner maintenance), not a market business workflow.
src/omnibase_infra/nodes/node_runner_usage_effect/handlers/__init__.py # approved existing infra handler path; new business-domain handlers belong in omnimarket.
src/omnibase_infra/nodes/node_runner_usage_effect/handlers/handler_runner_usage_savings.py # approved existing infra handler path; new business-domain handlers belong in omnimarket.
src/omnibase_infra/nodes/node_runtime_error_triage_effect/handlers/__init__.py # approved existing infra handler path; new business-domain handlers belong in omnimarket.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ class EnumOmnibaseInfraTopic(str, Enum):
CMD_ONBOARDING_START_V1 = "onex.cmd.omnibase-infra.onboarding-start.v1" # onex.cmd.omnibase-infra.onboarding-start.v1
CMD_PATTERN_B_DISPATCH_V1 = "onex.cmd.omnibase-infra.pattern-b-dispatch.v1" # onex.cmd.omnibase-infra.pattern-b-dispatch.v1
CMD_REMOTE_AGENT_INVOKE_V1 = "onex.cmd.omnibase-infra.remote-agent-invoke.v1" # onex.cmd.omnibase-infra.remote-agent-invoke.v1
CMD_RUNNER_FLEET_HEALTH_EVALUATE_V1 = "onex.cmd.omnibase-infra.runner-fleet-health-evaluate.v1" # onex.cmd.omnibase-infra.runner-fleet-health-evaluate.v1
CMD_RUNNER_FLEET_MAINTAIN_START_V1 = "onex.cmd.omnibase-infra.runner-fleet-maintain-start.v1" # onex.cmd.omnibase-infra.runner-fleet-maintain-start.v1
CMD_RUNNER_FLEET_SNAPSHOT_GATHER_V1 = "onex.cmd.omnibase-infra.runner-fleet-snapshot-gather.v1" # onex.cmd.omnibase-infra.runner-fleet-snapshot-gather.v1
CMD_TOPIC_MIGRATION_EXECUTE_V1 = "onex.cmd.omnibase-infra.topic-migration-execute.v1" # onex.cmd.omnibase-infra.topic-migration-execute.v1
CMD_VECTOR_STORE_REQUEST_V1 = "onex.cmd.omnibase-infra.vector-store-request.v1" # onex.cmd.omnibase-infra.vector-store-request.v1
DLQ_COMMANDS_V1 = "onex.dlq.omnibase-infra.commands.v1" # onex.dlq.omnibase-infra.commands.v1
Expand Down Expand Up @@ -72,6 +75,8 @@ class EnumOmnibaseInfraTopic(str, Enum):
EVT_ONBOARDING_STEP_VERIFIED_V1 = "onex.evt.omnibase-infra.onboarding-step-verified.v1" # onex.evt.omnibase-infra.onboarding-step-verified.v1
EVT_PATTERN_B_DISPATCH_COMPLETED_V1 = "onex.evt.omnibase-infra.pattern-b-dispatch-completed.v1" # onex.evt.omnibase-infra.pattern-b-dispatch-completed.v1
EVT_ROW_COUNT_DIAGNOSTIC_V1 = "onex.evt.omnibase-infra.row-count-diagnostic.v1" # onex.evt.omnibase-infra.row-count-diagnostic.v1
EVT_RUNNER_FLEET_HEALTH_VERDICT_V1 = "onex.evt.omnibase-infra.runner-fleet-health-verdict.v1" # onex.evt.omnibase-infra.runner-fleet-health-verdict.v1
EVT_RUNNER_FLEET_MAINTAIN_COMPLETED_V1 = "onex.evt.omnibase-infra.runner-fleet-maintain-completed.v1" # onex.evt.omnibase-infra.runner-fleet-maintain-completed.v1
EVT_RUNNER_HEALTH_SNAPSHOT_V1 = "onex.evt.omnibase-infra.runner-health-snapshot.v1" # onex.evt.omnibase-infra.runner-health-snapshot.v1
EVT_RUNTIME_BOOTED_V1 = "onex.evt.omnibase-infra.runtime-booted.v1" # onex.evt.omnibase-infra.runtime-booted.v1
EVT_RUNTIME_ERROR_V1 = "onex.evt.omnibase-infra.runtime-error.v1" # onex.evt.omnibase-infra.runtime-error.v1
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
# SPDX-License-Identifier: MIT
"""Runner-fleet health compute node."""

from omnibase_infra.nodes.node_runner_fleet_health_compute.node import (
NodeRunnerFleetHealthCompute,
)

__all__ = ["NodeRunnerFleetHealthCompute"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
# SPDX-License-Identifier: MIT
# Copyright (c) 2025 OmniNode Team
#
# ONEX Node Contract
# Node: NodeRunnerFleetHealthCompute
#
# Pure/deterministic classifier for the runner-fleet-maintain workflow
# (OMN-13942, Increment 1). Consumes a facts-only ModelRunnerFleetSnapshot
# (gathered upstream by node_runner_health_snapshot_effect) and produces a
# typed ModelRunnerFleetHealthVerdict. No I/O of any kind -- this node never
# calls gh, ssh, or docker. It only recommends actions; it never executes
# them.
#
# Related Tickets:
# - OMN-13109 / OMN-13912 / OMN-13915: wedge/crash-loop/heartbeat heuristics
# ported into this node's classification logic
# - OMN-13932: motivating gap; this node adds BUILDX_UNAVAILABLE and
# CODELOAD_THROTTLED, which close a live blind spot in the current
# bash/CLI substrate
name: "node_runner_fleet_health_compute"
contract_version:
major: 1
minor: 0
patch: 0
node_version: "1.0.0"
node_type: "COMPUTE_GENERIC"
description: >
Pure, deterministic classifier of a runner-fleet snapshot into a typed health verdict: per-runner state, fleet aggregates, and recorded (never executed) recommended actions.

input_model:
name: "ModelRunnerFleetHealthEvaluateCommand"
module: "omnibase_infra.nodes.node_runner_fleet_health_compute.models.model_runner_fleet_health_evaluate_command"
description: "Command carrying the snapshot to classify."
output_model:
name: "ModelRunnerFleetHealthVerdict"
module: "omnibase_infra.nodes.node_runner_fleet_health_compute.models.model_runner_fleet_health_verdict"
description: "Per-runner + fleet-level health verdict with recommended actions."
handler_routing:
routing_strategy: "payload_type_match"
handlers:
- event_model:
name: "ModelRunnerFleetHealthEvaluateCommand"
module: "omnibase_infra.nodes.node_runner_fleet_health_compute.models.model_runner_fleet_health_evaluate_command"
handler:
name: "HandlerRunnerFleetHealthEvaluate"
module: "omnibase_infra.nodes.node_runner_fleet_health_compute.handlers.handler_runner_fleet_health_evaluate"
output_events:
- "ModelRunnerFleetHealthVerdict"
runtime_profiles:
- effects
event_bus:
version:
major: 1
minor: 0
patch: 0
subscribe_topics:
- "onex.cmd.omnibase-infra.runner-fleet-health-evaluate.v1"
publish_topics:
- "onex.evt.omnibase-infra.runner-fleet-health-verdict.v1"
published_events:
- topic: "onex.evt.omnibase-infra.runner-fleet-health-verdict.v1"
event_type: "RunnerFleetHealthVerdictEvent"
message_category: "EVENT"
description: "Classified per-runner + fleet-level runner-fleet health verdict"
topic_config:
partitions: 1
replication_factor: 1
kafka_config:
"retention.ms": "604800000"
"cleanup.policy": "delete"
metadata:
description: "Runner-fleet health classifier (OMN-13942 Increment 1 -- read-only detection core)"
author: "OmniNode Team"
license: "MIT"
created: "2026-07-04"
tags:
- compute
- health
- runner
- fleet-maintain
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
# SPDX-License-Identifier: MIT
"""Handlers for the runner-fleet health compute node."""
Loading
Loading