Repository navigation
Conversation
GET|POST /api/system/metrics reports the namespace's workflow task failures, server-wide projection drift, and the namespace's request admission, durable-state and external payload usage, each with PHP's bounded label policy. Native enforces none of those quotas, so limits are null and rejection counters zero, as on an unconfigured PHP server. The new system-metrics fixture fails a workflow task in a named namespace, which native refused. That failure, and its retry, are scoped to the task's namespace, so named namespaces now accept it.
This was referenced Oct 22, 2026
Member
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #325. Stacked on train #675.
Summary
Native now serves
GET|POST /api/system/metricsas published Server 2.11 does (SystemController::metrics). The CLI and operators read it for the namespace's health. It reports:Each family carries PHP's bounded label policy, and the cardinality summary repeats them.
Native enforces no namespace admission, durable-state or payload quota, and its configuration audit refuses settings that would configure one. So limits and remaining values are null and rejection counters zero, as on an unconfigured PHP server. Usage is measured.
Projection drift reuses the same source as PHP: the operator snapshot's per-table
needs_rebuild. Native keeps run waits in the history transaction and derives timeline, timer and lineage views from history, so its only drift source is a run without its summary.Fixture first
The new
system-metricsfixture (fresh namespace, raw HTTP) registers a worker, starts two runs of two types, fails one workflow task and creates a schedule, then reads by GET and POST. Namespace-scoped values are exact. Drift is server-wide and counts stale or orphaned rows that other fixtures leave, so it is checked for its fixed table inventory, non-negative counts and consistent totals.The fixture found a native gap: failing a workflow task in a named namespace answered 422
development_namespace_operation_unqualified, and the store refused its retry outsidedefault. The failed task is read within the request's namespace, and its retry copies the run's namespace, so both gates are removed. A new test fails a task in one namespace, shows the other namespace cannot fail or poll it, and polls the retry (attempt 2) in its own namespace.Verification
system-metrics.--all-targets: 647 passed. The new metrics and named-namespace tests also pass on PostgreSQL and MySQL. PostgreSQL first failed:MAX(attempt_count)keeps the integer column's width, so it is now decoded by row.The port log now marks namespace delete and the JSON metrics as served. The Prometheus summary is a separate PR.