Repository navigation
feat(performance): collect bounded baseline evidence for every app run - #953
Merged
Merged
Conversation
Define collection ownership, bounded local evidence, user-facing investigation flows, and measurable rollout gates before changing production diagnostics. Refs #944
This was referenced Sep 13, 2026
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.
Normal users need background performance evidence without enabling the verbose diagnostics pipeline. This adds one shared main-process sample owner and an always-on utility-process collector with bounded queues, one acknowledged batch in flight, timeout/loss reporting and a run-wide restart cap.
The journal, freeze watchdog and legacy system-stat readers now share completed event-loop/memory samples. Renderer liveness, long tasks and thresholded input timing use one disposable probe; whole-document scans and duplicate verbose observers are removed. Preload projects/validates numeric heartbeat fields and holds one transport credit while main is blocked. Main derives window identity. Automatic heap-pressure capture records metadata; explicit heap capture and the journal's fatal-report path remain separate.
Adds cached typed IPC for the upcoming UI and an Electron helper entry plus isolated smoke harness. Live snapshots expose the last 120 main points; the worker retains a bounded 15-minute ring. Process attribution, UI, incidents, history/export and explicit recordings remain subsequent stages of #944.
Validation: 23 focused unit/renderer tests pass (queue/transport bounds, worker failure/restart cap, passive sample reads, disposal, no DOM scans, journal completeness, metadata-only heap pressure). Full main/renderer TypeScript check passes; the final full application check is delegated to PR CI after stopping redundant local jobs under shared-memory contention. Test-placement contract passes. Isolated real Electron helper smoke passes. Main/preload bundles and the isolated helper built successfully. Final complete distributable verification is delegated to PR CI.
Measured initial helper RSS: 69,746,688 bytes (~66.5 MiB), above the provisional 64 MiB target. This is recorded for stage 6 overhead qualification; no whole-app budget pass is claimed. Both independent Agent Code orchestration reviewers verified head ace79c1 with no remaining findings.
Foundation #949 is merged; this PR now targets main.
Review corrections preserve awake stalls, retain intervening journal peaks with an explicitly labelled worst-window p99, defer terminal teardown until quit admission, validate complete worker snapshots, keep main readings authoritative, reconcile live windows independently of lossy data, use monotonic deadlines, and exclude provider credentials from the helper environment. Regression coverage includes malformed replies, clock rollback and cancelled shutdown.
Fixes #950
Refs #944