Commit Graph

14882 Commits

Author SHA1 Message Date
pulse-triage[bot] 44ef70ed3e Exercise backend bootstrap portability and full terminal restoration
Cover setup, Proxmox and container callers with a real PTY, isolated standalone and BusyBox tool selection, distinct fail-closed modes, private root/sudo history and one bounded command body. These controls expose the unchanged backend reader before its repair.

Change-source: pulse-maintainer
2026-10-13 17:14:10 +01:00
pulse-triage[bot] 9dc664aea3 Integrate reviewed native NAS fixture collector controls
Preserve exact specialist commit and matched source-5ndingzw qualification. This bounded inert fixture strengthens readiness and ownership checks without changing production wrappers; native macOS and installed appliance recovery remain separate.

Change-source: pulse-maintainer
2026-10-13 16:15:04 +01:00
pulse-triage[bot] 09920be696 Integrate reviewed Docker healthcheck and resource-sizing guidance
Preserve exact specialist commits and retained consuming document proof. The Docs consumer and dependency bytes are unchanged; this help maintenance is not a baseline-memory repair.

Change-source: pulse-maintainer
2026-10-13 16:15:02 +01:00
pulse-triage[bot] 68478ee102 Merge current published drawer History refinements into reviewed maintenance
Preserve the exact reviewed tip and incorporate current upstream History default, marker shape and readout behavior additively.

Change-source: pulse-maintainer
2026-10-13 16:06:37 +01:00
rcourtman 2e71658174 Keep one timeline per resource in mock chart history (#2908)
Mock chart history thinned each metric with LTTB on its own. LTTB keeps
value-dependent points, so the metrics of one resource ended up with
different timestamps. The public demo (6.5.0) showed this: a container's
24h history had eight ~48-point series spread over 162 distinct
timestamps, and a node's had 166. The drawer History panels break a line
wherever another series in the panel has a reading, so every mock chart
drew as dots with "Missing observations". Real poller history writes all
of a resource's metrics at the same times.

Mock series are now thinned onto an epoch-aligned grid. Each bucket
keeps its first reading, the newest reading is kept too, and every point
keeps its own timestamp. Point targets and values are unchanged.

Verification:
- `TestMockChartHistorySharesTimestampsAcrossMetrics`
(`monitor_metrics_slo_test.go`) checks a mock VM, container and node, on
synthetic and seeded history, at 1h, 4h, 24h and 7d. It fails on the
previous code (5 of 20 memory timestamps shared with cpu) and passes
now. `internal/monitoring` passes in full.
- On a mock-mode build of this branch, `/api/metrics-store/history`
returns a timestamp union equal to the per-series count for a VM, a
container, a node and an agent at 1h, 24h and 7d. The drawer History tab
draws one continuous path per series with no "Missing observations". The
unpatched build of the same estate showed 82 dots and the note on all
three panels.
2026-10-13 16:04:43 +01:00
rcourtman 588b48b4cf Keep drawer History dots round and its readout steady (#2907)
Two drawer History presentation fixes, both reported while previewing
the drawer redesign:

- **Oval dots.** The plot stretches its viewBox to the panel
(`preserveAspectRatio="none"`), so the `<circle>` markers for single
observations and the hover cursor rendered as wide ovals. They are now
zero-length, round-capped strokes with a non-scaling stroke, so they
stay round at any width. Series lines carry `data-history-series` so
tests can tell lines from dots.
- **Jumping note.** "A dash means no stored observation at this time"
appeared and vanished as the inspected time changed, pushing the chart
up and down while scrolling past it. A missing value now reads **no
reading** in the readout itself, and the line is gone. In a pointer
sweep the chart height stayed constant (202px at 1024, 327px at 390).

Tests: History tests select lines by `path[data-history-series]` and
hover markers by `[data-history-hover-marker]`. A new guard checks the
plot has no `<circle>` and that dots are round non-scaling strokes. The
readout assertions now expect "no reading". Workloads, Infrastructure
and Docker suites pass (3,692 tests). Contract notes in
`frontend-primitives` and `performance-and-scalability`.
2026-10-13 15:39:52 +01:00
rcourtman b4be3bd55b Keep one timeline per resource in mock chart history
Mock chart history thinned each metric with LTTB on its own. LTTB keeps
the points whose values stand out, so cpu, memory and disk of one guest
kept different timestamps: on the public demo a 24h container history
had eight ~48-point series spread over 162 distinct timestamps. The
drawer History panels break a line wherever another series in the panel
has a reading this one lacks, so every mock chart drew as dots with a
"Missing observations" note. Real history does not do this because the
poller writes all of a resource's metrics at the same times.

Thin mock series onto an epoch-aligned grid instead: keep the first
reading in each bucket plus the newest reading, at their own
timestamps. Which readings survive now depends only on when they were
taken, so series sampled together keep identical timestamps, values
stay real readings, and point targets are unchanged. The synthetic
generator no longer pre-thins to 500 points, since every caller thins
onto the grid.
2026-10-13 15:28:57 +01:00
rcourtman c2f9654e61 Open drawer History on the week below the 24h trend cards (#2906)
The guest and node drawer Overview now leads with 24h trend cards
(#2900), so a History tab that also opened on 24 hours repeated them.
History now opens on **7 days** for those drawers: Overview answers
"what is it doing now", History "what is normal this week". Any range is
still selectable, and the free plan keeps 7 days, so the default is
never locked.

- Trend cards read their own `DRAWER_TREND_RANGE` (24h). A 24h History
selection still reuses their cached read.
- Drawers without trend cards (Docker host, resource detail) keep the
24h History default.
- Tests: the History-range assertions are moved to 7d, and a new
NodeDrawer test checks reads go 24h (cards) then 7d (History). Putting
the default back to 24h fails that test. Workloads, Infrastructure and
Docker suites pass (3,693 tests).
- Browser receipt from a mock-mode build at 1280 and 390px.
2026-10-13 15:24:47 +01:00
rcourtman 5bfa246856 Keep drawer History dots round and its readout steady
The History plot stretches its viewBox to the panel width
(preserveAspectRatio="none"), so the <circle> markers for single
observations and the hover cursor rendered as wide ovals. They are now
zero-length, round-capped strokes with a non-scaling stroke, drawn in
screen pixels, so they stay round at any width. Series lines carry
data-history-series so tests can tell lines from dots.

The readout explained a missing value with a separate line, "A dash
means no stored observation at this time", which appeared and vanished
as the inspected time changed and pushed the chart up and down, most
visibly while scrolling past it. A series without a reading at the
inspected time now says "no reading" in the readout itself, and the
extra line is gone.
2026-10-13 15:22:12 +01:00
pulse-triage[bot] 24cfb568d8 Integrate reviewed drawer evidence and accessible safety guidance
Merge exact Web candidate f034be1854. Resolve drawer overlap to its browser-verified contents and System facts controls; retain canonical GuestDrawer assertions, newer agent help, updater repair and consolidated contracts. Retained source and browser proofs qualify presentation only, not native workload or QGA recovery.

Change-source: pulse-maintainer
2026-10-13 15:21:59 +01:00
pulse-triage[bot] a3679d6a43 Use a native-built inert collector in NAS watchdog controls
The private NAS fixture copied /bin/sleep and relied on its renamed process identity. Build a bounded Go collector instead and require its fixed readiness marker through the generated wrapper's retained stderr, as well as exact kernel process ownership. Preserve actual wrappers, teardown/parser, all stop and cleanup assertions, and existing deadlines. This removes a platform-owned executable assumption; it does not diagnose or clear the preceding macOS failures or establish native appliance recovery.

Contract-Neutral: Private fixture executable and readiness proof only; production installer, process ownership, safety deadlines and wire contracts are unchanged.
Change-source: pulse-maintainer
2026-10-13 15:20:17 +01:00
rcourtman 921ebceaa9 Open drawer History on the week below the 24h trend cards
The guest and node drawer Overview now shows 24h trend cards for CPU,
memory, disk and temperature, so a History tab that also opened on 24
hours repeated them. History now opens on 7 days for those drawers:
Overview answers "what is it doing now", History "what is normal this
week", with any range still selectable. The free plan keeps 7 days, so
the default is never locked.

The trend cards read their own 24h constant, and a 24h History
selection still reuses their cached read. Drawers without trend cards
(Docker host, resource detail) keep the 24h History default.
2026-10-13 15:06:59 +01:00
pulse-triage[bot] 11aace9307 Record consuming Docker resource-sizing help verification
Bind desktop Chromium and narrow WebKit journeys, exact document and consumer bytes, safe diagnostic links and four natively inspected captures. This qualifies the changed guidance, not a memory repair or native deployment.

Contract-Neutral: Browser verification receipt only; production source, runtime behaviour and subsystem contracts are unchanged.
Change-source: pulse-maintainer
2026-10-13 14:57:04 +01:00
pulse-triage[bot] f034be1854 Record consuming browser proof for the composed drawer contents
Verify the actual Workloads/Node drawers, History and shipped Docs at desktop and phone widths in both themes. All sixteen final captures are natively inspected; source/artifact hashes, 44px phone guidance and persistent denied-update HelpIcon state are bound to this commit's own parent.

Contract-Neutral: Source-bound browser receipt only; no runtime, regression, graph or advice changes.
Change-source: pulse-maintainer
2026-10-13 14:49:32 +01:00
pulse-triage[bot] 4491595251 Keep Docker healthcheck guidance free of arbitrary resource caps
The copyable healthcheck previously also imposed a 256 MB memory limit and half a CPU, without workload qualification. Preserve the check, separate sizing from health and repair, and retain existing deployment policies. Link the bounded read-only interpretation and cover the shipped document and actual Docs consumer.

Contract-Neutral: Existing documentation and offline consuming fixtures only. No runtime defaults, deployment policy, API, retention, polling, resource enforcement or subsystem contract changes.
Change-source: pulse-maintainer
2026-10-13 14:48:54 +01:00
pulse-triage[bot] d8e7ebd31a Integrate reviewed agent-command help and consuming browser proof
Change-source: pulse-maintainer
2026-10-13 14:35:51 +01:00
pulse-triage[bot] c06f13d3b0 Capture the consuming update-access document at its actual viewport
Desktop journeys and phone drawer/help checks complete; the phone's entire troubleshooting document exceeds Chromium/WebKit's image dimension ceiling. Capture the actual linked section at the verified viewport instead of an unreadable whole-document image.

Contract-Neutral: Browser documentation capture size/position only; no product, assertion, source test or graph changes.
Change-source: pulse-maintainer
2026-10-13 14:28:43 +01:00
pulse-triage[bot] 2dd0c44165 Check retained evidence in both filesystem and trend consumers
The completed async trend introduces a second truthful last-known explanation. Scope both checks to their real consuming surfaces and require both to disappear on the fresh synthetic read rather than relying on one unscoped match.

Contract-Neutral: Browser selectors/assertions cover both existing evidence consumers; no product, source tests or graph changes.
Change-source: pulse-maintainer
2026-10-13 14:17:15 +01:00
pulse-triage[bot] c0cb7a02db Keep System controls scoped to the composed drawer surfaces
Final-source proof source-gvq604pb passed types and 492 tests but exposed nine obsolete fixture assumptions after additive upstream composition. Scope upstream OS facts assertions to the visible facts strip and open native Details before checking the retained full System row. Preserve all value, wrapping, freshness and mounted-identity assertions; no runtime source changes.

Contract-Neutral: Integration test selectors and native disclosure setup only; production drawer bytes and behavior are unchanged.
Change-source: pulse-maintainer
2026-10-13 14:16:04 +01:00
pulse-triage[bot] 51e7cf634e Navigate the composed drawers with the shipped tab semantics
The consuming pass now confirms actual captured focus and reading guidance, then exposes the fixture's button-role selector for the semantic History tab. Use its shipped tab role for both transitions; keep the on-demand History check.

Contract-Neutral: Browser control selector correction only; product, source tests and graph are unchanged.
Change-source: pulse-maintainer
2026-10-13 14:09:55 +01:00
pulse-triage[bot] db2615f4da Reconcile published contracts and alert-first drawers with reviewed maintenance
Preserve exact reviewed d636bfdaea and published 0a44d276db ancestry. Retain both contract additions, readable System evidence and stable accessible update help alongside upstream alert-first trends, facts and Details.

Change-source: pulse-maintainer
2026-10-13 14:09:00 +01:00
pulse-triage[bot] cd4d23e98c Bind guidance focus measurements to the actual captured frame
Retain the pre-capture CSS measurement and exact element classes alongside the captured frame, then apply unchanged strict criteria to the rendered observation. This preserves failing pixels rather than ending with a DOM-only claim.

Contract-Neutral: Browser observation/capture ordering only; no product, threshold, regression or graph changes.
Change-source: pulse-maintainer
2026-10-13 14:06:08 +01:00
pulse-triage[bot] 59c240a5e4 Carry full System evidence tests into the visible drawer facts
The combined full suite passed 23,370 tests but six inherited System tests still queried the removed table row. Keep every OS/name/version/update/liveness case, asserting the actual visible wrapping facts outside closed Details instead of reintroducing a duplicate row.

Contract-Neutral: Test consumer selectors follow the composed facts strip; all existing evidence and visibility obligations remain.
Change-source: pulse-maintainer
2026-10-13 14:02:31 +01:00
pulse-triage[bot] ba71784cef Observe a drawn trend threshold through its visible SVG
A horizontal SVG line has a zero-height box even when its enclosing chart is visible. Require the threshold node and the visible chart without treating Playwright's line-box visibility test as a product failure; pixel inspection remains required.

Contract-Neutral: Browser SVG observation correction only; no source behaviour, chart assertion, regression or graph is changed.
Change-source: pulse-maintainer
2026-10-13 13:58:09 +01:00
rcourtman 0a44d276db Consolidate shared contracts and retire obsolete obligations (#2904)
Shared rules were repeated across subsystem contracts, and some still
required the deleted Discovery scanner or superseded proofs. Keep each
shared rule at its canonical owner with scoped consumer links, retain
local differences, and remove obligations whose runtime or verification
path no longer exists.

Correct the stale temperature-padding expectation, trusted-command
producer description, telemetry adoption fields and proof names against
current source. Qualification stays with the existing customer-journey
document. Assistant, all four Patrol modes, paid entitlements, VM backup
precautions and installer/native qualification limits are preserved.
Runtime code, registry ownership and proof routing are unchanged.

Validation: focused monitoring, API, identity, telemetry and server
tests, contract/registry/status audits, scoped-link and ownership
checks, and normal commit hooks. The two slices remove 466 net lines
across 13 contracts and consolidate 16 shared rule families without
moving the bulk into another catalog.
2026-10-13 13:57:02 +01:00
pulse-triage[bot] 1ed2b3a0d2 Observe settled trend and focus state in the composed browser journey
Paired native-tab controls with and without the clock show the expected outline on unchanged source. Resolve the actual loaded trend and focused pseudo-state before sampling CSS; retain the same focus assertions and both adverse passes, without inventing a product colour or clock fault.

Contract-Neutral: Browser observation protocol only; production, acceptance criteria, regressions and graph remain unchanged.
Change-source: pulse-maintainer
2026-10-13 13:53:29 +01:00
pulse-triage[bot] 6e541d04cc Record consuming desktop and phone agent-help verification
The new source-bound static fixture exercises the actual Docs fetch, renderer, keyboard and touch links with eight natively inspected captures. All producer, consumer and served bytes match; this completes help qualification, not native QNAP recovery or release availability.

Contract-Neutral: Browser receipt only; production source and subsystem contracts are unchanged.
Change-source: pulse-maintainer
2026-10-13 13:50:29 +01:00
pulse-triage[bot] 28574fa4b5 Observe composed guidance focus after the rendered frame
Retain the initial zero-width outline observed immediately after native tab input. Wait for fonts and two rendered frames before applying the unchanged focus criterion, as the established consuming guidance harness does.

Contract-Neutral: Browser observation timing only; no production, criterion, regression or dependency change.
Change-source: pulse-maintainer
2026-10-13 13:45:09 +01:00
rcourtman 420f34a41d Consolidate shared contracts and retire obsolete obligations
Keep shared tenant-store, backup association, source identity, grouping,
installer qualification and alert evidence rules at their canonical owners.
Consumer contracts retain scoped references and their distinct local rules.

Remove obligations for the deleted Discovery scanner and backfill. Replace
superseded chart-padding expectations, telemetry schema history and test
names with the current source contracts while retaining VM backup precautions,
privacy limits, paid behavior and native qualification boundaries.
2026-10-13 13:44:50 +01:00
pulse-triage[bot] 3b9b151578 Bind composed trends to the consuming History API fixture
The second pass reached real guest guidance and retained disks but supplied a reply to the wrong history endpoint. Match the actual metrics-store request, use native tab traversal for the guidance, and consume the node help link through its shipped Docs renderer.

Contract-Neutral: Browser fixture response and interaction correction only; production, source regressions and dependency graph remain unchanged.
Change-source: pulse-maintainer
2026-10-13 13:40:10 +01:00
rcourtman a7bbd0ee2a Consolidate installer and settings contract ownership (#2903)
The same removal and settings-preservation rules were maintained in
several subsystem contracts. Keep removal safety in agent lifecycle and
settings compatibility in the API contract, with scoped links from
consumers.

Preserves legacy Assistant preferences, paid entitlement checks,
installer recovery rules and native qualification limits. Runtime code
and ownership/proof routing are unchanged.

Validation: contract, registry and status audits, normal commit-hook
governance tests, four installer removal controls, Assistant mode-echo
and Patrol default handler tests, and settings initialization tests.
2026-10-13 13:37:58 +01:00
pulse-triage[bot] 25f76ecc2f Drive the composed drawer through its actual row keyboard control
The first consuming pass timed out before opening the desktop drawer: the fixture driver focused a name span instead of the row action. Use the shipped disclosure control and retain that failed pass; no runtime or assertion is weakened.

Contract-Neutral: Browser fixture input correction only; production and regression bytes are unchanged.
Change-source: pulse-maintainer
2026-10-13 13:35:33 +01:00
pulse-triage[bot] 012b5cbdae Bind the Docs preview to the installed browser target
The original prepared fixture failed esbuild lowering before producing an artifact. Keep that complete adverse receipt. Use the same current-engine target as the existing consuming previews; this does not change the production target or claim legacy-browser qualification.

Contract-Neutral: Correct test-only preview compilation for the installed current browser; production source, tool limits and runtime contracts are unchanged.
Change-source: pulse-maintainer
2026-10-13 13:30:27 +01:00
pulse-triage[bot] 32a4fc10c1 Qualify drawer composition through reading and access consumers
Cover closed-Details OS and filesystem guidance plus stable update help across readings, relative ages and evidence changes. Add a compiled safe-observation browser fixture for the combined drawers and shipped Docs.

Contract-Neutral: Connected composition regression and browser fixtures retain existing source behaviour and document the merge outcomes.
Change-source: pulse-maintainer
2026-10-13 13:29:26 +01:00
pulse-triage[bot] 1205f276e2 Prepare agent-command Docs proof outside the browser compiler tree
Keep the original output-bound attempt stopped. Compile the existing Docs fetch, renderer, router and shipped help in the offline source VM, then exercise exact static bytes at desktop and phone with a small bounded browser process and native captures. No runtime or tool-boundary change.

Contract-Neutral: Test-only consuming Docs fixture and source-bound preview preparation; production code, routes, installer/runtime contracts and enforced browser limits are unchanged.
Change-source: pulse-maintainer
2026-10-13 13:26:14 +01:00
rcourtman 2dfbbe4f9f Consolidate installer and settings contract ownership
Keep removal safety requirements in agent lifecycle and replace deployment
copies with scoped references. Keep legacy Assistant mode-echo compatibility
and security setup settings preservation in the API owner, so their consumers
do not maintain separate copies of the same obligations.

Runtime behavior, paid entitlement checks and native qualification limits
remain unchanged.
2026-10-13 13:25:37 +01:00
pulse-triage[bot] d841465640 Compose agent-command help for consuming browser proof
Preserve the original guidance candidate and existing source history; this isolated composition is not canonical integration or publication.

Change-source: pulse-maintainer
2026-10-13 13:24:12 +01:00
pulse-triage[bot] a11f031fd1 Compose alert-first drawers without losing reading and access guidance
Keep published alert-first 24-hour trends and closed Details. Preserve phone filesystem guidance, full OS facts, and a drawer-owned update-access help dialog outside the demoted inventory. Retain both independent subsystem contract additions.

Change-source: pulse-maintainer
2026-10-13 13:23:27 +01:00
pulse-triage[bot] d636bfdaea Set exact initial modes in NAS executable controls
The chosen source proof runs with umask 077. Explicitly chmod the inert pre-update binaries so failure controls can require exact preservation of a 0755 executable rather than assuming WriteFile overrides the caller's mask. This changes only fixture setup; production permission, trust and recovery assertions are retained.

Change-source: pulse-maintainer
2026-10-13 13:22:11 +01:00
pulse-triage[bot] 45669119cc Compose reviewed notice accessibility with the assigned Web base
Change-source: pulse-maintainer
2026-10-13 13:21:38 +01:00
pulse-triage[bot] a38ef3734d Keep NAS agent update copies executable
Avoid rewriting an already-replaced QNAP executable through an aliased persistent path. Stage split QNAP and Unraid copies in owned same-directory temporaries, set execute permissions before atomic replacement, and clean every failed stage without changing saved state or update trust. Add authenticated HTTPS and real child-exec regressions plus persistence failure and recovery controls. Native appliance and old-installed-updater recovery remain separate.

Change-source: pulse-maintainer
2026-10-13 13:18:15 +01:00
rcourtman 2cc29dcbd0 Honour recurring and descendant maintenance in Patrol findings (#2902)
Patrol's operator-state projection dereferenced the one-shot
MaintenanceStartAt/EndAt whenever IsInMaintenanceAt was true. A
recurring window also reports active but leaves those fields nil, so
the first finding Patrol evaluated during a recurring occurrence
panicked the provider. The projection now takes its bounds from the
active occurrence.

Alerts already silence guests under a host window scoped to
resource_and_descendants, but Patrol read only the exact resource, so
the same planned work dismissed a guest's alerts and still raised its
Patrol findings. Both now resolve maintenance through one rule,
unifiedresources.ActiveMaintenanceCoverageAt: own window plus
descendant-scoped ancestor windows, latest active end wins. Only
maintenance is inherited; monitoring mode, lifecycle and remediation
locks stay exact-resource state. An inherited dismissal says the window
is on a parent resource and names it on the lifecycle event, and the
Manage help now says descendants' new Patrol findings are dismissed
too.
2026-10-13 13:16:52 +01:00
pulse-triage[bot] 340a832faa Integrate reviewed cached DNS address fallback
Change-source: pulse-maintainer
2026-10-13 13:07:45 +01:00
rcourtman 49b7abc860 Honour recurring and descendant maintenance in Patrol findings
Patrol's operator-state projection dereferenced the one-shot
MaintenanceStartAt/EndAt whenever IsInMaintenanceAt was true. A
recurring window also reports active but leaves those fields nil, so
the first finding Patrol evaluated during a recurring occurrence
panicked the provider. The projection now takes its bounds from the
active occurrence.

Alerts already silence guests under a host window scoped to
resource_and_descendants, but Patrol read only the exact resource, so
the same planned work dismissed a guest's alerts and still raised its
Patrol findings. Both now resolve maintenance through one rule,
unifiedresources.ActiveMaintenanceCoverageAt: own window plus
descendant-scoped ancestor windows, latest active end wins. Only
maintenance is inherited; monitoring mode, lifecycle and remediation
locks stay exact-resource state. An inherited dismissal says the window
is on a parent resource and names it on the lifecycle event, and the
Manage help now says descendants' new Patrol findings are dismissed
too.
2026-10-13 12:58:17 +01:00
pulse-triage[bot] ee700b62eb Integrate reviewed early NAS removal-safety preflight
Retain the exact Delivery commit and its complete source-el4dto5p proof. The CI-only partition preserves all checks and deadlines; native recovery and upstream drawer reconciliation remain separate owning-lane work.

Change-source: pulse-maintainer
2026-10-13 12:13:00 +01:00
pulse-triage[bot] ed2107bee0 Explain stopped agent commands without credential or state churn
Distinguish private prompt preparation, preflight and read-only profile inspection from installation and destructive removal. Keep existing unavailable-agent and automatic-update investigations separate, and route FAQ and troubleshooting readers to the existing private-file and recovery guides.

Contract-Neutral: Help copy and rendered-document regression checks only; installer, credential, lifecycle and monitoring contracts are unchanged.
Change-source: pulse-maintainer
2026-10-13 12:07:59 +01:00
pulse-triage[bot] 4295476940 Try reachable alternatives in the cached infrastructure DNS answer
Retain the shared resolver and request authority while retrying only failed socket establishment. Usable addresses share one bounded dial budget; cancellation prevents further attempts and TLS still authenticates the original hostname and pin. Connected controls reproduce the first-address defect and cover cache reuse, families, deadlines and cancellation.

Change-source: pulse-maintainer
2026-10-13 12:03:15 +01:00
pulse-triage[bot] e241788c38 Integrate reviewed cancellable Proxmox certificate probes
Change-source: pulse-maintainer
2026-10-13 11:50:07 +01:00
pulse-triage[bot] 75afc9f1a9 Record shared notice keyboard and phone browser proof
Bind actual canonical guest, both drawer warnings, shipped Docs and RBAC recovery consumers to the containing source. Parent controls and final passes cover both themes and desktop/phone input. All 24 captures were natively inspected; native recovery and full source suites remain separate.

Contract-Neutral: Own-parent browser receipt only; no runtime or contract change.
Change-source: pulse-maintainer
2026-10-13 11:49:58 +01:00
pulse-triage[bot] 10bca28cc3 Keep the notice fixture on the declared History target
The canonical drawer requires an explicit metricsTarget to offer History; the connected fixture now supplies that real producer field rather than assuming the workload drawer fallback. This was found by source inspection before browser execution. Production and regression bytes remain unchanged.

Contract-Neutral: Synthetic browser fixture metadata only; no product or wire-contract change.
Change-source: pulse-maintainer
2026-10-13 11:35:16 +01:00