Repository navigation
Conversation
Add protected standalone metrics, passive readiness snapshots, processing freshness and bounded latency histograms. Document observed pending-age limits and telemetry accounting. Related to oceanbase#1983; durable global oldest-request age remains a separate persistence design requirement.
…ssing Store database-clock request timestamps atomically, prune acknowledged generations, and preserve unknown legacy ages. Refresh bounded snapshots independently of worker capacity and isolate observation failures. Add migration, concurrency, restart, real SQLite API stall, and scaling regressions plus opt-in OceanBase checks. Keep PR draft pending real OceanBase execution and final CI; local aggregate run was interrupted.
hidb4ai
left a comment
There was a problem hiding this comment.
One reproduced snapshot-consistency issue remains in the shared metrics endpoint: processing counts and their freshness metadata need to remain one coherent snapshot when collection fails.
|
Design note (non-blocking): prefer existing processing state for the initial monitoring scope My preference is to deliver stopped/stalled-processing detection without adding The proposed alternative is:
The important scope decision is that the initial release would detect stopped/stalled processing, but would not promise exact request age across restarts and partial acknowledgements. This is a deliberate contract change: update the documentation, alert examples, and acceptance tests accordingly rather than substituting approximate values under exact-age names. The current table addresses that stronger age requirement coherently, but stores one row per unacknowledged generation. A single stalled Scope can therefore accumulate many rows even though the backlog metric counts it as one Scope; these writes also happen when the metrics endpoint is disabled. Its shared binding/Scope/generation structure is reusable across Artifact Families, but reuse alone does not establish that this storage is needed now. This alternative still has the background read cost of counting pending intents, which should remain measured and bounded by an observation deadline. If exact durable age later becomes a firm operational requirement, we can evaluate timestamp/range storage at the shared processing boundary, with explicit workload and retention expectations. The existing generation counters alone cannot reconstruct those historical times. |
hireview001
left a comment
There was a problem hiding this comment.
- CI failed: validate (failure).
- CI failed: E2E harness (failure). Failed steps: validate / Validate harness and Compose definitions.
|
@Pika-Yalei please fix the github ci action failed process. |
fixing it... |
hireview001
left a comment
There was a problem hiding this comment.
- Resolve merge conflicts with the target branch.
Which issue or RFC does this PR close?
Closes #1983.
Initial monitoring scope: protected standalone metrics, dependency observations, and stopped/stalled-processing evidence. Exact request creation age across restart or partial acknowledgement is deliberately out of scope.
Rationale for this change
Operators need to distinguish unobserved or stale dependencies, idle processing, absent acknowledgement progress, and failures without making metrics collection execute probes or processing work. Standalone background services need an authenticated metrics surface.
What changes are included in this PR?
requested_generation > handled_generation, per binding, with a 30-second default cadence and 2-second observation deadline. Failures preserve the previous coherent snapshot.oldest_observed_pending_age_secondsas an approximate lower bound over retained locally observed pending work. History resets on restart or leadership change and is not an independent stall signal.oldest_pending_*metrics, or legacy-age-unknown metrics.Are there any user-facing changes?
New operational metric families and a standalone background metrics endpoint are available when metrics are enabled. Existing processing count/counter meanings are preserved; pending counts refresh independently of admission capacity.
This PR adds no schema table or migration. Pending observation reads existing binding intents in the background; its database cost scales with those intents and remains bounded by the observation deadline. Metric collection only copies bounded in-memory snapshots and makes no database/model calls; normal endpoint authorization retains its existing reads.
The local pending-age lower bound does not reconstruct durable request creation times. A large age alone does not imply a stall, zero does not prove an empty backlog, and restart/failover resets local history. See the operational documentation for freshness, reset and aggregation rules.
How was this change tested?
Published head:
95e91f4f0a3f5c4075407c4c3270b1c7b6b87b2f. The checks below ran against the identical tree634824fc22e660b49a32550584f85eaa84763b71. Full local checks below are complete. All seven new-head CI workflows are terminal: six succeeded and E2E failed on the independently reproduced upstream issue below; downstream acceptance coverage remains incomplete. Prior-head CI is not evidence for this head.e4efb39bd6b8303a508c83fd5fcde5f99290b785(2 failed, 106 deselected): the harness leaves__POWERCONTEXT_SCOPE_SCRIPT_JSON__unresolved while normal setup renders an absolute script path. Those upstream tests are absent from this PR branch; CI runs their synthetic merge with master. Both downstream Acceptance (sqlite/oceanbase) jobs are skipped. The three live OceanBase metrics cases run inside Acceptance (oceanbase), so they remain unverified on this head. All eight Python 3.11–3.14 unit/e2e matrix jobs and the website job have passed. No unrelated Kimi fix is included here.make checkpassed, including all pre-commit hooks, both type-check passes, and 50 integration-manifest tests.AI usage statement
Implemented, reviewed, and tested with assistance from OpenAI Codex. AI assistance covered code, regression tests, documentation, and this PR description.