Commit Graph

15076 Commits

Author SHA1 Message Date
pulse-triage[bot] 9dcd5697cc Keep incomplete Proxmox guest inventories out of publication
Require whole bounded, unambiguous enumerations on the efficient and node fallback routes. Preserve scoped empty inventories, LXC integer compatibility and ordinary counter/receipt semantics. Validate retained readings, History, breaches and template policy through actual fallback and recovery.

Change-source: pulse-maintainer
2026-10-14 11:35:55 +01:00
pulse-triage[bot] a0e352eaf9 Integrate reviewed complete Proxmox node inventory admission
Change-source: pulse-maintainer
2026-10-14 11:19:58 +01:00
pulse-triage[bot] a2022cbf9e Compose launch-visible upstream with reviewed maintenance
Change-source: pulse-maintainer
2026-10-14 11:19:55 +01:00
rcourtman 6f024c1c2d Give the GitHub star prompt a warmer presentation (#2926)
The restored star reminder looked like a routine status notice. The
prompt now uses the earlier “Enjoying Pulse?” heading, a GitHub badge
with a gold star, a colour accent and a full-width action. Its copy asks
for support based on usefulness and discovery.

The existing first-return timing, single lifetime appearance, permanent
dismissal, notice priority and shared actions are preserved. Phone
controls retain 44px touch targets and the card clears the measured
bottom navigation.

Validation: 14 banner tests, frontend type-check and lint, production
frontend and matching mock backend builds, and source-bound Playwright
on /proxmox/overview at 1440×900, 800×900, 390×844 and 320×740 in light
and dark themes. The browser matrix covers wrapping, focus and keyboard
actions, outside click and Escape, new-tab safety, permanent dismissal
and reload, notice priority, transport states and command-palette
suppression.
2026-10-14 11:12:56 +01:00
pulse-triage[bot] 75d5825463 Compose published resource-owned History with reviewed maintenance
Preserve the accepted cc6eb37ae9 history while incorporating current published History alert ownership and removal of the refresh control.

Change-source: pulse-maintainer
2026-10-14 11:08:20 +01:00
rcourtman 50864566e0 Give the GitHub star prompt a warmer presentation
The restored reminder used a muted compact notice. Bring back the
Enjoying Pulse heading, a GitHub badge with a gold star, a colour accent
and a full-width action. Focus the copy on usefulness and project
support while preserving one-time appearance and permanent dismissal.

Contract-Neutral: Presentation and copy only. Existing notice admission, shared action ownership, destination and persistence contracts are unchanged.
2026-10-14 10:52:53 +01:00
rcourtman b49e5502f9 Drop the history Refresh button and chart only a resource's own alerts (#2925)
I gave Sol (gpt-6.1-sol) a final review of the whole drawer series, with
11 full-resolution screenshots, and checked a real alert on the preview.
This fixes what that turned up and removes the history Refresh button.

**Alert matching**
- A Docker host drew its container's 85% memory trigger on the host's
own memory chart and turned the host reading red. Charts now take
triggers only from `getOwnAlertsForUnifiedResource` (the resource's
exact-key alerts). Needs attention still lists nested alerts.
- A container drawer listed none of its own alerts. The matcher now
answers to `docker:<host>/<container id>` (or `/name:<name>`), the key
`DockerContainerResourceID` writes.
- Docker and resource-detail drawers printed the breach-time alert
message ("memory at 99.5%") beside a chart reading 70%. They now use the
shared `getAlertAttentionCopy`, which reads "Memory 70% now, recovering
/ Clears after 5 minutes at 80% or lower".
- Disk temperature (`temperature`/`diskTemperature` to `smart_temp`) and
storage capacity (`usage`) alerts now reach their charts.

**Charts**
- No alert line is drawn before history exists, where it would sit at a
placeholder height.
- The legend names the trigger ("alert at 85.0%").
- On phones, a panel shown because of an alert stays shown after the
alert clears.
- Facts strips show only the size for retained memory readings.
- The "Refresh history" button is removed; the charts poll every 30s.
"Retry history" appears only for a failed read, and focus moves to the
history region when a successful retry removes it.

**Verification**
- Typecheck plus 826 test files (Workloads, Infrastructure, features,
utils, Storage) on pulse-dev; three docs-rendering tests timed out under
load there and pass on their own. Tests that used Refresh to trigger a
read now advance the poll on a fake interval clock.
- On the built preview, the real alert on container sftp-ingest-2 shows
in its drawer with the dashed line and legend label. The Docker host no
longer draws its container's trigger.

**Not in this PR**
- 23 manual browser proofs still click the removed History tab or
Refresh button; they are fixed in a follow-up.
- Review items deferred, listed for follow-up:
  - nested disk charts in a guest drawer keep polling behind Manage;
  - storage charts lack the band and the phone disclosure;
  - axis-label crowding in four-column layouts;
  - "Latest stored" ignores the response source;
  - inventory cards on resource-detail drawers.
2026-10-14 10:36:49 +01:00
rcourtman 86297b67ea Drop the history Refresh button and chart only a resource's own alerts
A final review of the drawer series (screenshots plus the full diff)
and a real alert on the preview found several problems:

- A Docker host drew its container's 85% memory trigger on the host's
  own memory chart and turned the host reading red. Needs attention
  rightly lists nested alerts; the charts now take triggers only from
  getOwnAlertsForUnifiedResource, the resource's exact-key alerts.
- A container drawer listed none of its own alerts. The matcher now
  answers to docker:<host>/<container id> (or /name:<name>), the key
  the alert engine writes, so it lists them and charts the trigger.
- Docker and resource-detail drawers printed the alert's breach-time
  message ("memory at 99.5%") beside a chart reading 70%. They now use
  the shared attention copy the Proxmox drawers use: "Memory 70% now,
  recovering".
- Disk temperature and storage capacity alerts reached no chart; an
  alert line drawn before any history sat at an arbitrary height; the
  dashed line had no visible label (the legend now says "alert at
  85.0%"); a phone panel shown for an alert hid again when the alert
  cleared, under a reader mid-inspection; facts strips stated a used
  memory amount for a retained reading.

The Refresh history button is gone: the charts poll every 30 seconds.
Retry history still appears for a failed read, and when a successful
retry removes it, focus moves to the history region instead of the
page. Tests that used Refresh to trigger a read now advance the poll on
a fake interval clock.
2026-10-14 10:23:01 +01:00
pulse-triage[bot] ba9bb34d09 Require complete Proxmox node inventory before recovery
Consume the bounded response through EOF before admitting nodes or a cluster probe. Reject missing, ambiguous and incomplete inventories without leaking response details, retain scoped empty arrays and provider metadata, and cover trusted startup, recovery, cached reads and consuming endpoint projection.

Change-source: pulse-maintainer
Contract-Neutral: Tightens existing node-inventory and recovery-health admission without changing the public response schema, API surface, permissions, TLS or guest-command policy.
2026-10-14 10:10:50 +01:00
pulse-triage[bot] cc6eb37ae9 Disable automatic caching in credential-capable triage job
Complete the reviewed parser workflow integration under the existing setup-action trust rule. Keep the exact locked install and pre-token tests, without caching packages across credential-capable runs.

Contract-Neutral: Explicitly disable setup-node automatic caching; silent issue classification, authority and product behaviour remain unchanged.
Change-source: pulse-maintainer
2026-10-14 10:04:57 +01:00
pulse-triage[bot] 36b4395eab Integrate reviewed exact Kubernetes API group tests
Change-source: pulse-maintainer
2026-10-14 09:58:43 +01:00
pulse-triage[bot] f95a66aa35 Integrate reviewed Markdown issue metadata parser
Change-source: pulse-maintainer
2026-10-14 09:58:41 +01:00
pulse-triage[bot] c1bcd855c9 Integrate reviewed native updater failure receipts
Change-source: pulse-maintainer
2026-10-14 09:58:38 +01:00
pulse-triage[bot] 2472849967 Integrate batch-start upstream PBS drawer proof repair
Retain the existing typed offline runtime fixture byte-for-byte; incorporate upstream correlation assertions and contract without duplicating providers.

Change-source: pulse-maintainer
2026-10-14 09:58:37 +01:00
pulse-triage[bot] f2a5fd244a Match complete Kubernetes API groups in guide tests
The required CodeQL check misclassifies two typed API-group array membership assertions as URL substring sanitization. Use one explicit exact-equality predicate for both readers and retain the existing role, resource, verb and private-token controls. Positive and lookalike-group cases protect the equivalent matching semantics without suppressing security analysis or changing runtime behaviour.

Contract-Neutral: Test-only exact API-group predicate and regression cases; Kubernetes guide, permissions, runtime and security contracts are unchanged.
Change-source: pulse-maintainer
2026-10-14 09:38:47 +01:00
pulse-triage[bot] aefa2f6005 Integrate reviewed compatible frontend dependency graph
Preserve the exact prepared graph ancestry and retained final-source qualification. Complete-graph strict audit and containing hosted CI remain required for protected publication; existing auth golden failures are not cleared.

Change-source: pulse-maintainer
2026-10-14 09:20:36 +01:00
rcourtman ba17533a03 Repair the PBS drawer browser fixture and its two proofs (#2924)
`scripts/check-drawer-tab-retention.cjs` (the #1723 tab-retention proof)
and `scripts/check-pbs-host-history-correlation.cjs` share the fixture
`frontend-modern/browser-tests/pbs-host-history-correlation.tsx`. That
fixture mounted the Backups table without the app runtime context the
drawer's Overview reads alerts from, so both proofs threw "useWebSocket
must be used within WebSocketContext.Provider" before the drawer
rendered. This happened on main too: they had silently stopped proving
anything.

- The fixture now supplies an explicit offline WebSocket and dark-mode
context and a router, matching the other drawer fixtures.
- The correlation proof follows the drawer's current shape. History
charts sit on Overview, so it checks that Overview stays selected with
stable chart paths and Identity rows across refreshes. The Identity card
shows each identifier once (since 4884052bc5), so the Metrics Target row
may be absent; when it is present it must name the host series. The
intercepted history request must still name the host series in every
case.

Results on pulse-dev (Chromium 151):

| Proof | Result |
| --- | --- |
| Tab retention | Passes at 1280px and 390px |
| PBS host history correlation | Passes in all 12 cases (pbs-only,
side-by-side and guest topologies; stable and reordered; 1280px and
390px) |
| Negative control: reset the tab whenever the metrics target drops |
Retention proof fails ("tab selection was discarded") at both widths |
| Negative control: chart the PBS service key | Correlation proof fails
("expected the host history target agent/agent-proxback") |
2026-10-14 09:18:34 +01:00
pulse-triage[bot] df3a3d1e71 Keep copied Markdown evidence out of issue metadata
Replace the repeatedly patched line scanner with the existing exact Marked 17.0.6 GFM lexer. Preserve real legacy values and silent current-thread label deltas while excluding quoted, nested, HTML and multiline-code declarations and upgrade-source title fallback. Install the complete one-package locked graph with scripts disabled and verify triage before minting its existing write token.

Contract-Neutral: Replace the issue metadata scanner within the existing silent classification contract; no product runtime, API, rendered Pulse UI, permissions, retest or disposition-authority change.
Change-source: pulse-maintainer
2026-10-14 09:18:15 +01:00
pulse-triage[bot] e1cd6843e9 Preserve native updater failures across cleanup
Keep the original failed transaction command distinct from any later cleanup command. Retain fixed operation labels and require portable controls for command, timeout, assertion, cleanup-only and successful receipts, without changing update transactions or disclosing command output.

Change-source: pulse-maintainer
2026-10-14 09:16:19 +01:00
rcourtman ac75d4425a Repair the PBS drawer browser fixture and its two proofs
The drawer tab-retention proof (#1723) and the PBS host history
correlation proof share browser-tests/pbs-host-history-correlation.tsx.
That fixture mounted the Backups table without the app runtime context
the drawer Overview reads alerts from, so both proofs threw before the
drawer rendered and had silently stopped proving anything.

The fixture now supplies an explicit offline WebSocket and dark-mode
context and a router, as the other drawer fixtures do. The correlation
proof follows the drawer's current shape: history charts sit on
Overview, so it checks that Overview stays selected with stable chart
paths across refreshes. Since the Identity card shows each identifier
once, the Metrics Target row may be absent; when present it must name
the host series, and the intercepted history request still must.

Both proofs pass at 1280 and 390px on every topology. Negative controls
fail as they should: resetting the tab when the metrics target drops
breaks the retention proof, and charting the PBS service key breaks the
correlation proof.
2026-10-14 09:02:31 +01:00
pulse-triage[bot] a6ac018c45 Integrate reviewed Proxmox probe recovery truthfulness
Change-source: pulse-maintainer
2026-10-14 08:06:25 +01:00
pulse-triage[bot] 3de8af55ab Integrate reviewed recovery fixture and renderer admission repairs
Change-source: pulse-maintainer
2026-10-14 07:59:46 +01:00
pulse-triage[bot] 331ee327ea Load History label consumers before timing their assertions
The complete prepared-graph suite timed out in the cross-picker label check while it awaited cold presentation-module imports. Load the same real disk and pool consumers with the test module, then keep every label assertion within the unchanged five-second test window.

Contract-Neutral: Test import scheduling only; no runtime, label expectation, assertion timeout, security gate or browser baseline changes.
Change-source: pulse-maintainer
2026-10-14 07:48:12 +01:00
pulse-triage[bot] db8587f7d1 Align the cached fallback fixture with observed recovery
Replace the old optimistic-health expectation with cached selection, failed-request and later-success controls. Advance no production clock or safety fence and avoid an irrelevant constructor attempt in the in-memory fixture.

Contract-Neutral: Test-only correction to the recovery contract established in 4147f48db3; runtime and browser inputs are unchanged.
Change-source: pulse-maintainer
2026-10-14 07:39:58 +01:00
pulse-triage[bot] 410bda9041 Integrate reviewed confined PVE helper guidance
Change-source: pulse-maintainer
2026-10-14 07:26:18 +01:00
pulse-triage[bot] 4147f48db3 Keep failed Proxmox nodes probes out of recovered health
Require the actual nodes/login probe to succeed at startup, recovery and lazy selection instead of accepting guest-like response text. Retain failed single-endpoint health until an ordinary request succeeds, preserving cached last-resort reads, real guest error handling, temporary rate-limit handling and trust policy. Add producing-path and connected projection regressions and revise the old nodes-as-guest fixture contract.

Change-source: pulse-maintainer
2026-10-14 07:24:36 +01:00
pulse-triage[bot] 10e7a1c727 Keep NAS result inventory bound to the native-basename control
Require the renamed native process-field assertion in the complete NAS removal oracle; retain all twenty controls and their strict executed verdicts.

Contract-Neutral: Update only the required test identity after the fixture assertion rename; no production or acceptance-contract change.
Change-source: pulse-maintainer
2026-10-14 07:23:20 +01:00
pulse-triage[bot] fd0754d7c3 Keep containing recovery proof faithful to current helpers
Current exact-head CI exposes outdated PBS proof inventory, omitted bounded-download helper extraction, closed transport rejecting the production HTTPS flags, and Darwin's truncated comm column in Linux NAS fixtures. Preserve exact transport and process ownership, restoration and migration safety assertions while binding the controls to the actual producer.

Contract-Neutral: Test and offline CI-fixture alignment only; no installed runtime, trust, credentials, deadlines, source safety or public contract changes.
Change-source: pulse-maintainer
2026-10-14 07:22:52 +01:00
pulse-triage[bot] 8c8a48e0eb Compose the prepared frontend graph with reviewed monitoring guidance
Preserve imported source and receipt ancestry while qualifying the complete dependency group against current assigned main.

Change-source: pulse-maintainer
2026-10-14 07:22:47 +01:00
pulse-triage[bot] aaccb05fc0 Integrate reviewed guest safety guidance at collection controls
Change-source: pulse-maintainer
2026-10-14 07:19:47 +01:00
pulse-triage[bot] 9085539f03 Gate ordinary E2E on auth renderer controls
Run the existing credential-free diagnostic regressions in tier admission before dependency installation or image/shard work. Check the actual workflow wiring alongside the read-only collector and unchanged strict goldens.

Contract-Neutral: Invoke existing auth-renderer regression controls in CI; no public contract, dependency, golden or threshold changes.
Change-source: pulse-maintainer
2026-10-14 07:18:13 +01:00
pulse-triage[bot] a7e13e51be Integrate reviewed auth renderer diagnostics and PBS phone receipt
Retain exact reviewed Delivery and Web commits. The diagnostic collector preserves strict goldens and records bounded renderer facts; source-p67_zn71 and retained browser controls cover the new test code. No runtime frontend changes or pending graph are included.

Change-source: pulse-maintainer
2026-10-14 07:04:36 +01:00
pulse-triage[bot] a4bd1a329b Integrate reviewed Proxmox password member recovery
Accept the exact Core candidate with retained TLS admission, containing races, connected projection, build and consuming browser proof. Preserve saved trust and full polling-session admission; installed acceptance remains separate.

Change-source: pulse-maintainer
2026-10-14 06:48:11 +01:00
pulse-triage[bot] c708959f8e Record source-bound consuming proof for confined-helper help
The actual Docs fetch, Markdown renderer and router pass desktop Chromium and 390px WebKit navigation and reading checks. All six original captures were inspected with the native image tool; no host, agent or installed recovery is asserted.

Contract-Neutral: Browser receipt only; no runtime, guide content or subsystem contract delta.
Change-source: pulse-maintainer
2026-10-14 06:40:39 +01:00
pulse-triage[bot] 49ca6ad444 Keep collector-scope intent alongside the guest precaution
Retain the useful reason to disable unneeded collectors as well as the new guest-read limits and safety guidance. Preserve the existing copy guard rather than weakening it. Recheck the final PVE producer on desktop and phone, retaining unchanged PBS/PMG branch proof. Browser evidence records actual input hashes instead of a permanently hardcoded source parent.

Contract-Neutral: Existing collection guidance and browser-proof metadata only; collector defaults, API saves, credentials, TLS and guest request behaviour are unchanged.
Change-source: pulse-maintainer
2026-10-14 06:38:42 +01:00
pulse-triage[bot] fc1db27208 Keep History interpretation checks aligned with stored peak guidance
Combined publication proof source-in_pn1fq found the older five-row assertion after reviewed guidance added low-high bands and inspected peaks. Assert all seven rows and both additional uncertainty limits, preserving every existing assertion and the shipped guide.

Contract-Neutral: Test-only History guide coverage follows accepted documentation; no runtime, renderer, guide, dependency, timeout or safety-policy change.
Change-source: pulse-maintainer
2026-10-14 06:36:48 +01:00
pulse-triage[bot] 399618939d Name scoped legacy PCT access without implying root is required
The legacy grant-pct path deliberately permits only list and df outside the typed helper. Keep that distinction instead of calling every fallback a full-trust collector, and describe configured mounts rather than promising every mounted filesystem.

Contract-Neutral: Guidance wording only; no telemetry, privilege, API, installer or availability contract delta.
Change-source: pulse-maintainer
2026-10-14 06:27:36 +01:00
pulse-triage[bot] acd5603878 Keep confined PVE filesystem help consistent with its collector
The deployment table still calls the typed helper a pct reader, while the implementation uses socket-free discovery and command fallback cannot recover within PrivateNetwork. Link the deployment choice, collector help and support matrix to one shipped explanation of partial, unavailable and older-helper readings, without recommending privilege or state changes.

Contract-Neutral: Guidance and consuming-proof coverage only; no telemetry, privilege, API, installer or availability contract delta.
Change-source: pulse-maintainer
2026-10-14 06:22:43 +01:00
pulse-triage[bot] 30455a2c34 Explain guest safety at the Proxmox collection controls
Replace the existing full-visibility promise with the actual guest-agent availability and permission limits. Put the backup precaution beside VM collection, preserving independent thaw and every-covered-filesystem write checks rather than implying that an OK backup or a running VM proves recovery. Exercise the production connection editor with harmless fixtures, without probing a guest or replacing credentials.

Contract-Neutral: Copy and an accessible landmark on an existing form; collection defaults, guest requests, connection saves, credential handling and TLS policy are unchanged.
Change-source: pulse-maintainer
2026-10-14 06:11:54 +01:00
pulse-triage[bot] bd6de2bed3 Retain actual auth renderer facts beside strict goldens
Current hosted E2E stays green with an adverse probation auth comparison, while local auth pixels use a different observed font. Attach actual heading font selection, browser and viewport identity, and complete loaded stylesheet hashes before each existing strict comparison. Keep diagnostic gaps explicit, omit page/account/URL/CSS contents, and never change styles, baselines, thresholds or assertions.

Contract-Neutral: Add read-only test diagnostics for existing auth goldens; application, permission, deployment, screenshot and security contracts are unchanged.
Change-source: pulse-maintainer
2026-10-14 05:57:02 +01:00
pulse-triage[bot] 2de5a12892 Compose qualified PBS phone receipt without pending graph
Change-source: pulse-maintainer
2026-10-14 05:53:20 +01:00
pulse-triage[bot] 0898c5d484 Compose the complete frontend group with current monitored source
Retain the completed PBS phone receipt and coupled Solid serializers unchanged while incorporating reviewed password-session, diagnostics and source-admission repairs. The graph remains unqualified until exact installed consumers, production build, desktop and phone browser proof and strict audit/current CI are complete.

Change-source: pulse-maintainer
2026-10-14 05:50:20 +01:00
pulse-triage[bot] d549d1b5d2 Integrate reviewed safe diagnostics collection help
Accept the exact Product intelligence candidate with retained source and desktop/phone consuming proof. Existing navigation and safe evidence guidance only; native recovery and publication remain separate.

Change-source: pulse-maintainer
2026-10-14 05:45:01 +01:00
pulse-triage[bot] 2d14da7380 Bind recovery fixtures to real fields and independent guest origins
The projection fixture now uses the actual saved ClusterEndpoint schema. Give each malformed-filesystem fixture an independent base path so reused listener ports cannot borrow a previous live uncertainty fence; all real guard state and response assertions remain.

Contract-Neutral: Test-only schema correction and independent synthetic endpoint identity; no production policy, deadline, wire or configuration changes.
Change-source: pulse-maintainer
2026-10-14 05:43:31 +01:00
pulse-triage[bot] bf67cf6532 Keep probe counts faithful to their actual observation
A completed first-use retry does not return its nodes payload. Omit that unknown diagnostic count rather than reporting zero. Concurrent ordinary reads may legitimately open additional TLS sockets, so the construction control bounds logins and probe reads rather than pooled read connections.

Contract-Neutral: Diagnostic-count fidelity and fixture-only connection counting; no wire, trust, polling, authority or consumer contract delta.
Change-source: pulse-maintainer
2026-10-14 05:40:56 +01:00
pulse-triage[bot] ddc86c4293 Keep lazy Proxmox session construction serial during pin capture
The shared probe must release the health mutex for first-use trust. Retain the prior single construction boundary so joined readers do not duplicate capture and password login. The actual TLS concurrency control checks eight ordinary reads and nonblocking health inspection.

Contract-Neutral: Preserve existing serialized lazy client construction while releasing only the health and trust mutex for first-use capture; no wire, authority, configuration or consumer contract changes.
Change-source: pulse-maintainer
2026-10-14 05:39:47 +01:00
pulse-triage[bot] 59fedc9309 Integrate reviewed delivered-history secret scanning
Preserve exact Delivery candidate 3aaa967bba. Review retains the executed real-Git scope controls and workflow trust proof; the unchanged VM historical-object failure is not relabelled as a pass. No frontend source changes or security exceptions.

Change-source: pulse-maintainer
2026-10-14 05:39:42 +01:00
pulse-triage[bot] 0c130694cc Recover declared Proxmox members through password TLS admission
Use one bounded first-use probe for constructor and nodes-read pin failures at startup, recovery and lazy selection. Keep capture credential-free, primary and saved pins immutable, and full polling-session acceptance separate. Qualify all existing auth encodings and refusal, cancellation and consuming projection controls.

Change-source: pulse-maintainer
2026-10-14 05:35:12 +01:00
pulse-triage[bot] 85bed6c515 Record consuming proof for safe diagnostic collection help
Bind current desktop and 390px Docs navigation, reviewed pixels and the existing empty Diagnostics panel to byte-identical shipped guides. Retain original browser fixture failures and the unmodified live-check/privacy boundaries. This records help usability, not native recovery.

Contract-Neutral: Browser receipt metadata only; no runtime, renderer, documentation content or contract delta.
Change-source: pulse-maintainer
2026-10-14 05:30:38 +01:00
pulse-triage[bot] a0db3ef1e9 Preserve the qualified topology for the unchanged WASM bundle
Keep all seventeen refreshed versions and the compatible serializers, but use maintained main's existing complete lock representation for the unchanged optional WASM archive. The proposal's six extra inBundle records have no independent tarball or SRI; they add inventory, not resolutions. Preserve the exact official parent tarball, SRI, bundled names and declared dependencies instead of inventing child integrity or changing the registry-only acquisition check.

Contract-Neutral: No package, security floor or runtime dependency is removed; the unchanged bundle remains authenticated by its original parent archive, using the existing qualified lock topology.
Change-source: pulse-maintainer
2026-10-14 05:22:23 +01:00