Commit Graph

9618 Commits

Author SHA1 Message Date
rcourtman b262f24c54 Defer realtime tick application while the operator scrolls
The remaining scroll hitch on large estates was the realtime websocket
tick: every few seconds a delta landed mid-gesture and blocked the main
thread for 200-560ms. The scroll path itself was already clean after the
windowing fixes, so the tick was the one thing still hitting the wheel.

Mid-gesture ticks now cost ~1ms: the resource delta queues unapplied in
arrival order (even the baseline patch walks the whole estate), and the
reporting projection plus the lastUpdate tick token defer latest-wins
alongside it. Holding the token matters as much as holding the data —
it is what unified resource projections and workload remaps key on, so
deferring it keeps every downstream consumer quiescent through the
gesture. Everything drains as one coalesced batch at scroll idle,
through the same deferral set and flush the hidden-tab path uses.

Ordering and lifecycle guards: a non-empty queue keeps queueing so
deltas never apply out of order, hidden-tab ticks drain the queue before
applying in place, a full snapshot supersedes and clears the queue, and
connection resets drop all pending deferral state. Alert application
stays live mid-gesture.

Verified on the 50-node/929-guest mock estate: zero websocket long
frames across 16-20s continuous scrolls (previously one 200-560ms block
per tick), one coalesced flush ~300-450ms after gesture end, and the
Last refresh footer still advancing on desktop and narrow viewports.

This is a scheduling boundary, not a cost reduction: the per-tick
reconciliation cost itself remains owned by the
resource-payload-static-metadata coverage gap.
2026-08-26 17:18:51 +01:00
rcourtman c154fa7aed Eliminate large-estate scroll hitches in windowed tables
Wheel scrolling the Proxmox overview on a 929-guest estate hitched for
200-260ms per runway rebalance. Four compounding causes, all fixed:

- The windowing runway policy rebalanced in ~53-row jumps inside a
  non-passive wheel listener, so the compositor waited on a multi-frame
  remount. Both windowing owners now keep a symmetric runway topped up
  in dead-band batches (one bounded mutation frame per ~8 rows of
  travel), every windowed-page listener is passive, and only a viewport
  that leaves the mounted window entirely re-centers it in one jump.
- The Workloads viewport-sync effect tracked the windowing signals its
  own measurement pass moves, so every shift re-ran row measurement
  (two forced reflows) and listener binding. The measurement pass is
  now untracked, matching the unified-resource sync owner; the platform
  and storage windowing owners had the same latent tracking and are
  untracked too.
- WorkloadPanel built its guest-id lookup from the windowed slice, so a
  shift re-validated every mounted row's memo chain. The lookup now
  derives from the full group and only changes when data changes.
- The CPU/memory/disk bar hooks read offsetWidth in onMount, forcing a
  full-table reflow per mounted bar during every top-up. Width now
  comes solely from the ResizeObserver's initial pre-paint delivery.

Prewarmed-but-hidden platform tabs also ran viewport sync per scroll
event and paid the visible surface's layout flush; hidden surfaces now
skip sync via a shared checkVisibility guard.

Measured on the 50-node/929-guest mock estate at 2560x1240: a 4-row
top-up fell from ~230ms to ~7ms, scroll-jitter oscillation produces
zero frames over 25ms, and sustained fast scrolling holds native frame
cadence with one bounded mutation frame per dead-band. The remaining
scroll-time long tasks are realtime websocket merge ticks, which the
realtime-merge lane already owns.
2026-08-26 16:07:28 +01:00
pulse-triage[bot] 8d573cd0ac Make formatting-only governance deterministic in CI
Change-source: pulse-maintainer
2026-08-26 16:03:27 +01:00
pulse-triage[bot] 02d6df9317 Fix Proxmox network detail formatting gate
Change-source: pulse-maintainer
2026-08-26 15:57:35 +01:00
pulse-triage[bot] 2db7f8c373 Promote qualified offline-node E2E
Change-source: pulse-maintainer
2026-08-26 15:47:58 +01:00
pulse-triage[bot] 176268ca63 Record Proxmox network browser proof
Change-source: pulse-maintainer
2026-08-26 15:32:23 +01:00
pulse-triage[bot] 75b6655d6e Restore Proxmox node network details
Refs #1716

Change-source: pulse-maintainer
2026-08-26 15:17:12 +01:00
pulse-triage[bot] 9e9c3413a8 Promote qualified E2E specifications
Change-source: pulse-maintainer
2026-08-26 14:27:39 +01:00
rcourtman 74d0895e6e Fix mock storage history continuity
Contract-Neutral: Storage history behavior is documented in the staged API and storage contracts and covered by staged focused regressions; shared router references do not change agent-lifecycle, performance, or security contracts, and the proof allowlists do not yet name the focused test files.
2026-08-26 13:54:55 +01:00
pulse-triage[bot] 5fcb0d6655 Document pfSense agent service recovery
Refs discussion #1781

Change-source: pulse-maintainer
2026-08-26 13:28:46 +01:00
pulse-triage[bot] 5a78231607 Add manual workload column sizing
Refs #1746

Change-source: pulse-maintainer
2026-08-26 13:12:29 +01:00
rcourtman 3414a5abda Use host history for explicit Docker targets 2026-08-26 12:45:53 +01:00
rcourtman 08b8144fcf Use canonical history catalogs in storage drawers 2026-08-26 12:28:43 +01:00
rcourtman 5d46e7d0e7 Complete mock drawer history coverage
Contract-Neutral: restores existing metricsTarget identity and complete mock history fallback contracts without changing their public shape
2026-08-26 12:11:10 +01:00
pulse-triage[bot] 18b74c0adb Expose stable webhook message keys
Add a language-neutral condition key and explicit resource context to generic alert payloads so receivers can translate notifications without parsing English text.

Refs #1779

Change-source: pulse-maintainer
2026-08-26 12:04:43 +01:00
Richard Courtman 4d457159fc Synchronize transparency document mirror 2026-08-26 11:25:09 +01:00
Richard Courtman 55192bf835 Clarify continuous maintenance provenance 2026-08-26 11:23:05 +01:00
rcourtman 1943a1e97f Fix workload drawer history metrics targeting
Contract-Neutral: restores existing metricsTarget identity and mock history fallback contracts without changing their public shape
2026-08-26 11:17:41 +01:00
rcourtman e27585b0a2 Align history lock boundary assertion
Change-source: pulse-maintainer
2026-08-26 11:16:51 +01:00
rcourtman 420368e8e2 Allow standing triage disclosure link
Change-source: pulse-maintainer
2026-08-26 11:11:04 +01:00
rcourtman 4442322d2a Repair API scope browser verification receipt
Record the exact verified parent and the required narrow viewport evidence for the landed API Access change.

Change-source: pulse-maintainer
2026-08-26 10:55:11 +01:00
rcourtman 2d26eb8ba4 Expose agent lifecycle scope in API access
Align manually created Agent tokens with the runtime lifecycle minimum, expose agent:manage in custom create/edit flows, and document the backend-owned scope boundary.

Change-source: pulse-maintainer
2026-08-26 10:49:16 +01:00
rcourtman 09b1171976 Name the license plan boundary in history range lock copy
The guest and node drawer history lock panel and the shared history
chart lock overlay said a range was 'not enabled on this instance'
without saying why. Both now state that longer ranges require a higher
license plan, and the drawer panel keeps the current plan's retained
days. Refs #1717
2026-08-26 10:46:35 +01:00
rcourtman b727bc62e4 Improve desktop drawer detail layout 2026-08-26 10:33:33 +01:00
rcourtman a8e84b4011 Bound legacy demo bootstrap workload 2026-08-26 10:27:58 +01:00
rcourtman ad4c82c34e Enable sorting for workload IDs 2026-08-26 10:22:00 +01:00
rcourtman 3b866458f6 Fix workload table header alignment 2026-08-26 10:09:15 +01:00
Richard Courtman af370a8dda Route triage comments through dedicated identity 2026-08-26 09:59:10 +01:00
rcourtman 881d6dba02 Clarify development transparency policy 2026-08-26 09:24:57 +01:00
rcourtman c7930be1c0 Move GitHub AI disclosure to the document level
Per-comment stamps at continuous-automation volume made the machinery
louder than the maintenance. The standing disclosure is this page: it
now says plainly that day-to-day activity may be automated and
unstamped, that the tracker's pace is part of what is disclosed, and
that asking gets a straight human answer. Support email keeps its
per-message Pulse Triage identity.
2026-08-26 08:41:49 +01:00
rcourtman 8837bf21bd Return flaky offline-node E2E to probation
Change-source: pulse-maintainer
2026-08-26 08:32:51 +01:00
rcourtman a445f23753 Promote five repaired E2E specifications
Change-source: pulse-maintainer
2026-08-26 07:41:34 +01:00
rcourtman 95f57f446a Filter Proxmox backups by repository
Change-source: pulse-maintainer
2026-08-26 06:46:33 +01:00
rcourtman 52a3373ae6 Cover delayed Proxmox E2E hydration
Change-source: pulse-maintainer
2026-08-26 05:43:48 +01:00
rcourtman 83ac6a1bea Stabilise Proxmox backups E2E readiness
Change-source: pulse-maintainer
2026-08-26 05:16:18 +01:00
rcourtman dc1ddaa24e Fix stale backup alert attribution
Change-source: pulse-maintainer
2026-08-26 04:33:47 +01:00
rcourtman d742a87841 Document release qualifier source boundary
Change-source: pulse-maintainer
2026-08-26 03:41:05 +01:00
rcourtman ee22a969d3 Bind container qualification to caller commit
Change-source: pulse-maintainer
2026-08-26 03:36:46 +01:00
rcourtman a0aa5d4e55 Bind OIDC plan docs to RBAC governance
Change-source: pulse-maintainer
2026-08-26 02:36:04 +01:00
rcourtman fd8340b95e Clarify Community OIDC role mapping
Change-source: pulse-maintainer
2026-08-26 02:31:52 +01:00
rcourtman cf0ca6f127 Repair Proxmox history component contract
Change-source: pulse-maintainer
v6.4.0-rc.3 helm-chart-6.4.0-rc.3
2026-08-26 01:12:41 +01:00
Richard Courtman 8051e54d9a Prepare v6.4.0-rc.3 release 2026-08-26 00:58:11 +01:00
rcourtman 4e74703749 Refresh metrics history lookup snapshot
Change-source: pulse-maintainer
2026-08-26 00:46:15 +01:00
rcourtman cb47d3c245 Record Proxmox node history browser proof
Change-source: pulse-maintainer
2026-08-26 00:41:48 +01:00
rcourtman 8f7d5c2e98 Fix API-only Proxmox node history
Change-source: pulse-maintainer
2026-08-26 00:27:58 +01:00
rcourtman b34a3d8164 Fix stable demo runtime profile convergence 2026-08-26 00:20:50 +01:00
Richard Courtman adc20fc74a Prepare v6.4.0-rc.2 release v6.4.0-rc.2 2026-08-25 23:37:05 +01:00
rcourtman 9ff5dfb4d4 Disable Windows signing until SignPath is ready 2026-08-25 22:24:07 +01:00
rcourtman 8fdf148e3b Repair demoted E2E specifications
Change-source: pulse-maintainer
2026-08-25 21:59:53 +01:00
rcourtman a4fc272fc5 Merge remote-tracking branch 'origin/main' 2026-08-25 21:45:33 +01:00