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 explorerdocumentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew 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 contracts — probe, status, and roll-up semantics
Purpose
Finish the contract layer for the new control plane so implementation work has one current-truth target. Keep this batch doc-focused: define the final semantics for /live, /ready, and /admin/v1/status, plus shared state vocabulary, readiness impact, roll-up rules, quiet-source behavior, and drain/shutdown semantics.
Repo footprint
dev-docs/IO_CONTRACTS.md- adjacent cross-links in
dev-docs/DESIGN.md,dev-docs/VERIFICATION.md, ordev-docs/CHANGE_MAP.mdonly if needed to keep the contract discoverable and non-contradictory
In scope
| # | Type | Why included |
|---|---|---|
| #1303 | architecture | owns the living contract for I/O and control-plane semantics |
| #1306 | architecture | contract must match the implementation substrate it will drive |
Related metas / phases
- Narrow execution slice under
#1315 - Should land before deeper lifecycle and status plumbing so later work can follow one written contract
Non-goals
- no runtime behavior changes
- no endpoint implementation work
- no receiver/sink lifecycle wiring
- no broad doc rewrite outside the control-plane contract and necessary cross-links
Done when
-
dev-docs/IO_CONTRACTS.mddefines the final meaning of/live,/ready, and/admin/v1/status - shared state vocabulary is explicit:
starting,healthy,degraded,stopping,stopped,failed - readiness impact and roll-up rules are documented, including the default fail-open stance for
degraded - quiet sources are explicitly non-blocking for readiness
- drain/shutdown semantics are documented honestly
- enforcement status is called out where the implementation has not caught up yet
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 explorerdocumentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew 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 as a mechanical docs-contract task; the canonical control-plane contract file is missing, while runtime probe behavior is already concrete enough to document with explicit “enforcement status” gaps.
Recommendation
Create
dev-docs/IO_CONTRACTS.mdas the single source of truth for control-plane semantics (/live,/ready,/admin/v1/status) and link it from core dev docs. Keep this docs-only; do not change runtime behavior in this issue.Findings (evidence)
dev-docs/currently has noIO_CONTRACTS.md(repo listing includesADAPTER_CONTRACT.md,SCANNER_CONTRACT.md, etc., but notIO_CONTRACTS.md).crates/logfwd-io/src/diagnostics.rs:484-493routes include/health,/ready,/api/*; no/liveor/admin/v1/status.crates/logfwd-io/src/diagnostics.rs:532-541/healthalways returns200with{"status":"ok"...}.crates/logfwd-io/src/diagnostics.rs:545-552readiness docs in code explicitly say quiet sources are not a readiness gate.crates/logfwd-io/src/diagnostics.rs:553-565/readyis currently!pipelines.is_empty()(200 ready/503 not_ready).crates/logfwd-io/src/diagnostics.rs:1634-1665tests lock in current readiness semantics (no pipeline => 503; pipeline registered => 200).crates/logfwd-types/src/pipeline/lifecycle.rs:3,19-26lifecycle typestate isStarting -> Running -> Draining -> Stopped(different vocabulary than issue’s target control-plane states).book/src/config/reference.md:453-455andbook/src/deployment/monitoring.md:14-16document/health,/ready,/api/pipelinesonly.dev-docs/references/production-patterns.md:223-230uses/healthzand/readyzwording, showing doc-surface drift.Verification
Ran targeted readiness tests to confirm current behavior before drafting the spec:
Detailed Action Plan (mechanical implementation spec)
Create canonical contract doc
dev-docs/IO_CONTRACTS.md(new)Control-plane endpoints— define contract meaning for:GET /live(process liveness contract)GET /ready(readiness contract)GET /admin/v1/status(structured status snapshot contract)Shared state vocabulary— exact enum values:starting,healthy,degraded,stopping,stopped,failed.Readiness impact + roll-up semantics— include default fail-open fordegraded; define precedence/roll-up rules explicitly.Quiet-source behavior— explicitly non-blocking for readiness.Drain/shutdown semantics— document graceful drain vs forced stop truthfully.Enforcement status— table with columns:Contract item,Current implementation,Status(enforced/partial/not yet),Evidence.crates/logfwd-io/src/diagnostics.rs:532-565crates/logfwd-io/src/diagnostics.rs:1634-1665crates/logfwd-types/src/pipeline/lifecycle.rs:3,19-26Add discoverability cross-links (minimal, no broad rewrites)
dev-docs/DESIGN.md(architecture overview section near crate/runtime discussion)dev-docs/IO_CONTRACTS.mdas control-plane contract source of truth.dev-docs/CHANGE_MAP.md(Documentation-only changes section around lines 40-45)dev-docs/IO_CONTRACTS.md(canonical doc) rather than duplicated.dev-docs/VERIFICATION.mdpointing toIO_CONTRACTS.mdfor contract-level semantics.Test to write
IO_CONTRACTS.mdthat references existing diagnostics tests as contract witnesses:crates/logfwd-io/src/diagnostics.rs:1634-1665.Verification commands
cargo test -p logfwd-io ready_endpoint -- --nocapturerg -n "(/live|/ready|/admin/v1/status|starting|healthy|degraded|stopping|stopped|failed|fail-open|quiet)" dev-docs/IO_CONTRACTS.mdRelated Items
IO_CONTRACTS.mdas living contract target/admin/v1/statuspayload slice/readysemantics stabilization (quiet-source non-blocking behavior reflected in code/tests)crates/logfwd-io/src/diagnostics.rs:484-565crates/logfwd-io/src/diagnostics.rs:1634-1665crates/logfwd-types/src/pipeline/lifecycle.rs:3,19-26book/src/config/reference.md:453-455Note
🔒 Integrity filtering filtered 17 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".)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".)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".)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".)list_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".)list_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".)list_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".)list_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".)list_issues: 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".)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.
strawgate commentedon Apr 6, 2026
This stays the canonical contract/documentation slice for the control-plane cluster. It should remain separate from the implementation work-units so later runtime work has one written source of truth to follow.
strawgate commentedon Apr 7, 2026
Resolved by PRs #1454, #1509. Verified: /live, /ready, /admin/v1/status with ComponentHealth vocabulary, readiness impact rules, drain semantics.