syntax = "proto3"; package runner.v1; import "google/protobuf/timestamp.proto"; import "google/protobuf/duration.proto"; // ── Enums ── enum TriggerType { TRIGGER_TYPE_UNSPECIFIED = 0; TRIGGER_TYPE_MERGE = 1; TRIGGER_TYPE_TAG = 2; TRIGGER_TYPE_MANUAL = 3; TRIGGER_TYPE_SCHEDULE = 4; TRIGGER_TYPE_WEBHOOK = 5; TRIGGER_TYPE_AGENT = 6; } enum StepStatus { STEP_STATUS_UNSPECIFIED = 0; STEP_STATUS_PENDING = 1; STEP_STATUS_RUNNING = 2; STEP_STATUS_SUCCEEDED = 3; STEP_STATUS_FAILED = 4; STEP_STATUS_SKIPPED = 5; STEP_STATUS_CANCELLED = 6; } enum RunPhase { RUN_PHASE_UNSPECIFIED = 0; RUN_PHASE_PENDING = 1; RUN_PHASE_RUNNING = 2; RUN_PHASE_SUCCEEDED = 3; RUN_PHASE_FAILED = 4; RUN_PHASE_CANCELLED = 5; RUN_PHASE_NOTARIZED = 6; } // ── Messages ── message TriggerEvent { TriggerType trigger_type = 1; string commit_hash = 2; string branch = 3; string tag = 4; string requested_by = 5; string merge_session_id = 6; google.protobuf.Timestamp triggered_at = 7; } message StepResult { string name = 1; string step_type = 2; StepStatus status = 3; int32 exit_code = 4; google.protobuf.Duration duration = 5; bytes stdout_hash = 6; bytes stderr_hash = 7; repeated ArtifactRef artifacts = 8; string error_message = 9; uint32 attempt = 10; google.protobuf.Timestamp started_at = 11; google.protobuf.Timestamp completed_at = 12; } message ArtifactRef { string name = 1; string path = 2; bytes content_hash = 3; int64 size_bytes = 4; string media_type = 5; string oci_digest = 6; } message PipelineResult { string run_id = 1; string pipeline_name = 2; TriggerEvent trigger = 3; RunPhase phase = 4; repeated StepResult steps = 5; google.protobuf.Timestamp started_at = 6; google.protobuf.Timestamp completed_at = 7; google.protobuf.Duration total_duration = 8; string runner_svid = 9; bytes pipeline_yaml_hash = 10; string cluster_id = 11; AttestationInfo attestation = 12; } message AttestationInfo { bool anchored = 1; string anchor_id = 2; bytes merkle_leaf = 3; bytes merkle_root = 4; int32 leaf_index = 5; } message LogEntry { string step_name = 1; string stream = 2; string line = 3; google.protobuf.Timestamp timestamp = 4; uint64 sequence = 5; } message PipelineRunSummary { string run_id = 1; string pipeline_name = 2; RunPhase phase = 3; TriggerType trigger_type = 4; string commit_hash = 5; google.protobuf.Timestamp started_at = 6; google.protobuf.Timestamp completed_at = 7; uint32 steps_total = 8; uint32 steps_succeeded = 9; uint32 steps_failed = 10; bool attested = 11; }