v6.2.0-rc.5 shipped with an empty Proxmox workloads table and a crashing
Thresholds page (#1663) while the assertions that catch exactly that were
failing in CI: spec 64 red in the non-gating probation tier two hours
before the tag, and the gating Core E2E verdict red on the release commit
itself — which the release pipeline never consults. integration_tests is
also skipped entirely for prereleases, so the builds users test shipped
with no integration coverage at all.
Close the hole with a release_smoke job that runs for every cut,
prereleases included, and blocks create_release and the release verdict:
four interaction-free render assertions (Proxmox nodes+workloads, Docker
hosts+containers, Kubernetes clusters+pods, Alert thresholds) against the
mock-mode image built from the verified frontend bundle. The mock fixture
graph now always contains one freshly provisioned zero-used guest
filesystem, so the omitted-zero-numerics wire shape that crashed rc.5
stays exercised on every mock-backed surface. Verified locally: the suite
passes on main and fails on the rc.5 frontend for exactly the two shipped
regressions.
Preserve tenant-scoped metadata through partial URL updates and project stable URLs across runtime identities. Use a safe adjacent launch control across overview tables with desktop and mobile regression coverage.
tests/90-operational-trust-protection-posture.spec.ts failed the
stable tier on main in run 29731882505 — the first tiered run. One
incident on main demotes: it rejoins the gate after 10 consecutive
green runs, per the rule above PROBATION_SPECS.
Contract-Neutral: probation demotion per documented tier rule: spec 90 failed on main run 29731882505; CI gating list only, no dev-runtime delta
Mined per-spec failure data from the 32 completed Core E2E main runs
since the 2026-07-18 quarantine delist (failed-shard logs; a green
shard means every spec in it passed). 26 specs failed or retry-flaked
within the 10 most recent completed runs; they seed PROBATION_SPECS in
tests/integration/playwright.config.ts. The remaining 62 files form the
stable tier and are the only specs that can fail the e2e-verdict job.
Mechanism extends the existing quarantine list rather than adding a
parallel one: PULSE_E2E_TIER=stable ignores probation specs,
PULSE_E2E_TIER=probation runs only them, unset runs the full suite
(local behavior unchanged). CI runs both tiers per shard against the
same containers; the probation pass sits behind continue-on-error with
its own report/results dirs and artifacts, so a probation flake is
reported in the shard summary without painting main red.
Promotion rule, documented next to the list: a probation spec promotes
to stable after 10 consecutive green main runs with no failure and no
retry-flake; one incident on main demotes a stable spec back. In the
newest completed run (29729544151) every failure was in a probation
spec — under this split that run's verdict is green.
Contract-Neutral: CI-only E2E tier split: gating semantics of push-CI verdict; local npm test behavior and dev-runtime orchestration unchanged, no public contract delta
Contract-Neutral: Browser qualification keeps the existing deployment, authentication, and mobile layout contracts while reusing the accepted test credential and avoiding a WebKit synchronous-layout probe.
Contract-Neutral: RC qualification fixes preserve existing public API, tenant, monitoring, and organization contracts while correcting canonical runtime ownership and test fixtures.
Match only the canonical workloads request so unrelated resource traffic does not contend through the Playwright route handler.
Contract-Neutral: Test fixture routing only; no public subsystem contract change
Contract-Neutral: RC4 gate repair only: responsive layout correction, internal test hook, and E2E-only runtime target; no public subsystem contract changes
The discovery-config surface changed: with discovery disabled by default the
empty state offers a 'Configure discovery' button (which opens the Discovery
settings dialog), and the 'Run discovery' scan button only renders once
discovery is enabled.
- Landing test: assert 'Configure discovery' and that 'Run discovery' is absent,
instead of the stale 'Run discovery' / 'Discovery settings' button names.
- Discovery settings dialog test: open it via 'Configure discovery' (the dialog
title/copy/close-button assertions were already current).
- Explicit discovery scan test: enable discovery for that test by passing the
real /api/system/settings response through with discoveryEnabled flipped on,
so the 'Run discovery' scan button appears and the candidate->review flow runs.
Verified: all 5 desktop tests pass against the managed local backend.
Contract-Neutral: E2E quarantine recovery
Re-pin the assistant-drawer flow to the current surfaces: open via the
page-contextual 'Ask Pulse Assistant about TrueNAS' launcher on a live
/truenas page (not the retired /settings/infrastructure/platforms/truenas), and
resume the stubbed session through the 'Pulse Assistant sessions' menu -> the
'Resume Tool output preview proof' option (the session-picker list, not a bare
resume button).
Broaden the /api/ai/sessions stub glob to '**/api/ai/sessions*' so it matches
the picker's ?limit= query (the trailing * excludes the /messages subpath). The
tool row now renders the human summary with the target ('Run read-only command
on current resource') and the raw command preview ('$ printf preview-proof-0606')
as two separate lines, and the details control is the tool-row toggle
(title 'Show tool details'), not a standalone 'Details' button.
Verified: passes against the managed local backend.
Contract-Neutral: E2E quarantine recovery
Retrofit a worker-scoped cookie-session fixture (journeyAuth.ts) onto journey
smoke specs 01/06/07 so each worker logs in once and every test inherits the
cookie via storageState, instead of ensureAuthenticated's token path (which
leaves page.request cookie-less -> 401 on apiRequest/agent-report/audit
endpoints).
ensureJourneyReady verifies the cookie against the API directly and lands the
page on a non-bootstrap route (never '/' or '/login', which force the login
form even with a valid session -- #1574), so per-test auth issues zero login
POSTs and the suite stays under the backend's 10-logins/min/IP limit. The two
login-flow tests (health check, bootstrap-and-login) plus the logout/re-login
cycle keep their own explicit login on an isolated session -- logout() destroys
the current session, so it must never run against the shared worker cookie.
Re-pin 01 to the current platform-first IA: primary-nav tabs
['Proxmox','Alerts','Settings'] (no single 'Infrastructure' tab; Proxmox is
resource-admitted, so beforeAll enables mock mode first), settings sidebar
categories ['Infrastructure','System','Security']. Re-pin 06's reporting route
to /settings/support/reporting (heading 'Data & Reports') and guarantee mock
mode on before the two report-generation polls. Accept 503 in 07's
investigation-endpoint status set.
Verified: each spec passes on its own and a combined 01+06+07 run stays green
with zero login-rate-limit failures against the managed local backend.
Contract-Neutral: E2E quarantine recovery
These never-quarantined specs had rotted red on CI against v6 IA changes.
- 67: the add-infrastructure dialog replaced per-platform buttons with a
detect-or-agent chooser; the TLS-warning tests deep-link straight to
the platform credential slot via ?add=vmware / ?add=truenas
(ADD_STEP_TO_TYPE), and the notifications page heading is now
'Notifications'.
- 68-platform-pages-shell: platform sub-tabs are inventory-gated
(64cbdd6e4), so a platform with no connected instance shows the
empty-state card instead of sub-tab chrome; the no-data test accepts
either. The Docker containers tab was collapsed into Overview
(1f66a2f93), so it drops from the expected tab list.
- 69: the Commercial Funnel and Infrastructure Onboarding analytics were
removed from the diagnostics page and both exports (c6bcad255); the
spec now pins that boundary (analytics never render and are stripped
from full and sanitized exports) instead of asserting they appear.
Contract-Neutral: E2E straggler re-pins verified green on a fresh managed backend
Delist nineteen quarantined specs (69 green, 13 env-gated skips in one
full-batch run); 05/19/20/30/52/60/63/77/79 passed unchanged. 03 stays
quarantined with its reason recorded inline: multi-tenant scenarios 6/7
carry an unresolved org-resolution bug that CI's multi-tenant
environment would exercise, and 47/48 still await their concept rework.
- 15: organization panels only exist in multi-tenant installs, so those
routes now skip when the feature is off, and the Remote Access shell
description follows the refreshed Relay copy.
- 17: the backups page defaults to the guest-centric Coverage view when
anything needs attention; the day-activity assertions enter the By
date view first.
- 18/51: the Patrol page crashed to its error boundary under stale
autonomy stubs; the stubs now carry the requested/effective levels and
autopilot acknowledgement the page reads, and the paused copy is
sentence-case.
- 43: rewritten as a platform-pages tour (TrueNAS, vSphere, Proxmox,
Docker, PBS, PMG) since the settings platform views it pinned were
retired to a 404 with the legacy aliases.
- 49: the demo-estate proof follows the per-platform IA and drops a
self-contradictory storage exclusion that could never pass alongside
the west-a-service-pool assertion.
- 57: the RC Preview badge only renders in the authenticated shell, so
the spec signs in instead of stubbing the session.
- 62: the retired platform-management aliases deliberately 404 now
(cfb16e6da); the spec pins the graceful not-found page instead of the
removed redirect.
- 75: switches to cookie-session auth (the token path leaves
page.request unauthenticated), anchors on the Connection posture
region, and drops the retired operations sub-route.
- 84: a missing lab artifact is now a skip rather than a hard failure.
Contract-Neutral: E2E quarantine recovery, spec re-pins verified green on a fresh managed backend
Re-pin five quarantined commercial-funnel specs and delist all eight
from the quarantine (54/55/56 already passed unchanged; the two managed
demo runtime tests stay env-gated).
- The old stubbed auth shell renders the login page now that the app
shell makes auth-gated calls beyond the stub set; 59/61/70 sign in for
real and stub only the license or diagnostics surface under test.
- 53: hidden demo billing routes redirect to the settings infrastructure
root (the /install sub-route was retired), and the browser probe list
gains the trial/activate endpoint its hidden-keys contract already
named but never probed.
- 58: Remote Access stays in the free-tier nav on purpose (the panel
renders its own upgrade gate; hiding it made Relay undiscoverable), so
the spec pins its presence instead of its absence.
- 59/70: billing moved to the Pulse Intelligence settings group with a
Plans & Billing heading; plan-card assertions re-anchor at page scope
on the current copy (capability sentences, Apply key, Manual key
recovery disclosure, Patrol-flavoured activation summary).
- 61: the Commercial Funnel diagnostics card was deliberately removed
(c6bcad255); the spec now pins the inverse boundary, asserting the
internal funnel analytics never render even when the API payload
carries them.
Contract-Neutral: E2E quarantine recovery, spec re-pins verified green on a fresh managed backend
Re-pin seven quarantined specs to the surfaces that replaced the retired
/workloads and /storage pages and delist them from the quarantine.
- 44/45: the summary chart strip and its range buttons are gone; the
sparkline path maps x by timestamp, so the payload proofs assert
window coverage and tail stability directly against
/api/charts/workloads.
- 46: multi-range storage history proofs move onto /proxmox/storage
with point-count floors a fresh seeded backend guarantees.
- 50: physical disks live under the Physical Disks tab on
/proxmox/storage; rows are pinned by identity because live refreshes
re-sort the table, and late in-flight poll responses no longer fail
teardown.
- 59: the wide-set assertions run at 1600px (wide engages at 1536 after
the layout fix) plus a no-horizontal-scroll proof for the 1440px
compact default.
- 62: the Growth column is fixed to a 24h window; the rendered label is
proven against the same used-capacity history the endpoint serves.
- 64: the workloads surface lives on /proxmox, drawer tabs expose tab
roles, and row selection no longer writes a resource deep link.
Contract-Neutral: E2E quarantine recovery, spec re-pins verified green on a fresh managed backend
Both specs came back from quarantine on 2026-07-17 proven against
chromium, but Core E2E also runs them on mobile-safari, where they have
failed on every run since. The mobile layout collapses the thresholds
platform-scope filter into the FilterBar sheet, so the TrueNAS scope
button the first spec clicks does not exist and the click falls through
to the platform nav tab, and platform tables render as cards, so the
tr-row locators the second spec asserts on match nothing. Skip both on
mobile projects the same way 06-theme-visual does; mobile presentation
coverage lives in 04-mobile.spec.ts.
Re-pin the six /infrastructure-era specs to the vSphere platform page:
37 keeps its full facets/audit re-pin but is fixme'd because table-row
drawers disable remote history, leaving VMware hosts no reachable
change/action history surface (tracked); 38 and 42 move mention and
chat-turn coverage onto live mock state and the session transport (the
retired /api/ai/chat SSE stub is gone, so 42 proves the rendered
exchange instead of the wire payload); 39 and 41 pin the guest drawer's
read-only vCenter context and admin-action exclusions; 40 pins the
Datastores tab without backup semantics. 22 and 36 pass unchanged.
Verified via the managed local backend with PULSE_MOCK_MODE=true (8
passed, 1 tracked fixme).
Contract-Neutral: E2E quarantine-list shrink is test selection only; no deployment contract delta, mirrors bypass on 725837dc3