Repository navigation
Closed
Labels
P2: mediumMinor bug, missing validation, metric inaccuracyMinor bug, missing validation, metric inaccuracyarchitectureSystemic design improvements that eliminate classes of bugsSystemic design improvements that eliminate classes of bugscomponent:diagnosticsDiagnostics endpoints, dashboard, health, probes, and trace explorerDiagnostics endpoints, dashboard, health, probes, and trace explorercomponent:pipelinePipeline orchestration, batching, runtime flow, and worker coordinationPipeline orchestration, batching, runtime flow, and worker coordinationenhancementNew feature or requestNew feature or requestproductionRequired for production readinessRequired for production readinesswork-unitScheduling ticket for one agent runScheduling ticket for one agent run
Description
work-unit: control plane — process phase, drain, and probe truth
Purpose
Make the probe plane honest at the process and pipeline phase level. This batch owns runtime-backed truth for startup, serving, draining, shutdown, and the resulting behavior of /live and /ready.
This is the canonical execution slice under #1306 for process/pipeline probe truth. The local pipeline.rs seam in #1440 is a preparatory sub-slice for this work, not a separate owner of probe semantics.
Repo footprint
crates/logfwd-io/src/diagnostics.rscrates/logfwd/src/pipeline.rscrates/logfwd-types/src/diagnostics.rsor adjacent status modules- targeted diagnostics / pipeline tests
In scope
| # | Type | Why included |
|---|---|---|
| #1306 | architecture | this is the runtime slice for shared lifecycle/readiness substrate behavior |
| #1303 | architecture | probe behavior must match the written control-plane contract |
| #1440 | work-unit | the local pipeline health-transition seam exists to make this batch easier to land and verify |
Related metas / phases
- shared status model and
/admin/v1/statussurface:#1414 - diagnostics/backend+UI contract follow-on:
#1445 - temporary cleanup-wave coordination only:
#1450
Non-goals
- no ownership of shared status payload schema or
/admin/v1/statusassembly (that stays in#1414) - no backend/frontend diagnostics contract work (that stays in
#1445) - no input or output lifecycle wiring beyond what is needed for correct probe truth (that stays in
#1415and#1416)
Done when
-
/liveand/readyare derived from explicit process/pipeline phase truth instead of incidental runtime presence - drain and shutdown states are reflected honestly in probe behavior
- readiness behavior is documented and tested against the control-plane contract
- the implementation no longer depends on the older split represented by closed
#1438
Metadata
Metadata
Assignees
Labels
P2: mediumMinor bug, missing validation, metric inaccuracyMinor bug, missing validation, metric inaccuracyarchitectureSystemic design improvements that eliminate classes of bugsSystemic design improvements that eliminate classes of bugscomponent:diagnosticsDiagnostics endpoints, dashboard, health, probes, and trace explorerDiagnostics endpoints, dashboard, health, probes, and trace explorercomponent:pipelinePipeline orchestration, batching, runtime flow, and worker coordinationPipeline orchestration, batching, runtime flow, and worker coordinationenhancementNew feature or requestNew feature or requestproductionRequired for production readinessRequired for production readinesswork-unitScheduling ticket for one agent runScheduling ticket for one agent run
Activity
github-actions commentedon Apr 6, 2026
tl;dr: Outcome A — Ready for implementation. The current probe plane does not model process/pipeline phase truth yet (
/readyis only!pipelines.is_empty()), so this can be implemented mechanically by adding explicit phase state and wiring existing pipeline drain transitions into diagnostics.Recommendation
Implement this slice now as explicit phase-backed probes: add shared phase types in
logfwd-types, wire runtime transitions fromPipeline::run_async, expose/live(and keep/healthcompatibility), and make/readyphase-derived (servingonly).Findings
/health+/ready, no/live:crates/logfwd-io/src/diagnostics.rs:485-488/healthis unconditional process-ok payload:crates/logfwd-io/src/diagnostics.rs:532-541/readyis only pipeline-presence:crates/logfwd-io/src/diagnostics.rs:553-555crates/logfwd-io/src/diagnostics.rs:549-552crates/logfwd-io/src/diagnostics.rs:36-91,1001-1027logfwd-typesdiagnostics currently only exportsComponentStats(no phase/readiness model):crates/logfwd-types/src/diagnostics.rs:10-118crates/logfwd-types/src/pipeline/lifecycle.rs:19-26, transitions at153-163,280-310crates/logfwd/src/pipeline.rs:721-759run_asyncbegins:crates/logfwd/src/main.rs:935-937, run starts991-998/readycan be 200 before receiver sockets bind:DEVELOPING.md:195-197crates/logfwd-io/src/diagnostics.rs:1634-1666Verification
I ran current ready-endpoint tests to confirm baseline behavior:
These confirm today’s readiness contract is purely pipeline registration presence.
Detailed Action Plan (mechanical spec)
Add shared phase model in
crates/logfwd-types/src/diagnostics.rs.pub struct ComponentStatsand impls (:10-118).pub enum ProcessPhase { Startup, Serving, Draining, Shutdown, Stopped }pub enum PipelinePhase { Starting, Serving, Draining, Stopped }is_ready,is_livesemantics)Extend diagnostics runtime state in
crates/logfwd-io/src/diagnostics.rs.DiagnosticsServerstruct:pipelines,start_time, etc. (:365-380) but no phase field.PipelineMetricsif preferred)set_process_phase,set_pipeline_phase)Wire probe endpoints to explicit truth in
crates/logfwd-io/src/diagnostics.rs./livein match table near:485-493./healthcompatibility: either alias toserve_liveor preserve endpoint with same liveness semantics.serve_ready(:553-567): derive status code/body from process phase (200 only whenServing; 503 in Startup/Draining/Shutdown/Stopped).Expose phase in status JSON in
crates/logfwd-io/src/diagnostics.rs./api/pipelinespayload build::1001-1027has counters but no lifecycle phase.systemreadyboolean for operator clarityEmit runtime phase transitions from pipeline execution in
crates/logfwd/src/pipeline.rs.:721-759.run_asyncstart, around:569) => pipelineServing:635-637) => pipelineDraining:721-759) => pipelineStoppedSet process-level phase from startup/shutdown orchestration in
crates/logfwd/src/main.rs.:931-941; pipeline run launch::991-998.Tests to write/update
crates/logfwd-io/src/diagnostics.rs:/livetest (200 in all non-dead process phases)/api/pipelinesincludes phase fieldscrates/logfwd/src/pipeline.rs:Verification commands
cargo fmt --allcargo clippy --all-targets -- -D warningscargo test -p logfwd-io diagnostics::tests::cargo test -p logfwd pipeline::tests::just ciRelated Items
crates/logfwd/src/pipeline.rs(potential merge conflict area)crates/logfwd-io/src/diagnostics.rscrates/logfwd/src/pipeline.rscrates/logfwd-types/src/diagnostics.rscrates/logfwd-types/src/pipeline/lifecycle.rsDEVELOPING.md:195-197Note
🔒 Integrity filtering filtered 6 items
Integrity filtering activated and filtered the following items during workflow execution.
This happens when a tool call accesses a resource that does not meet the required integrity or secrecy level of the workflow.
issue_read: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".)search_pull_requests: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".)issue_read: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".)issue_read: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".)pull_request_read: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".)pull_request_read: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".)What is this? | From workflow: Issue Triage
Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.
[-]work-unit: logfwd-io/diagnostics — process phase, drain, and probe truth[/-][+]work-unit: control plane — process phase, drain, and probe truth[/+]strawgate commentedon Apr 7, 2026
Resolved by PRs #1454, #1491, #1509. Verified: probes derived from explicit ComponentHealth phase truth.