Automated PR created by Codex via Gitea API. Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #461
39 KiB
Browser Productization Bug Audit
Audit Metadata
- Branch:
390-restore-readiness-resolution-adapter-v1 - Commit SHA:
920f726acefc1a3fa66fcc3bd326225e75f2b839 - Date/time: 2026-06-20 09:30 Europe/Berlin
- Browser method used: Playwright
- Auth/session notes: Admin
/adminsession was authenticated as Ahmed Darrazi./system/*redirected to/system/login; system panel was not authenticated. - Test environment / workspace / environment names used: workspace
wp(id=3), environmentYPTW2(id=4, route keyb0091e5d-944f-4a34-bcd9-12cbfb7b75cf). - Whether repo was dirty before audit: No. Initial
git status --shortreturned no entries before audit artifacts were written. - Initial
git status --short:
- Final
git status --short:
M apps/platform/app/Filament/Resources/RestoreRunResource.php
M apps/platform/app/Filament/Resources/RestoreRunResource/Presenters/RestoreRunCreatePresenter.php
M apps/platform/app/Filament/Resources/RestoreRunResource/Presenters/RestoreRunDetailPresenter.php
M apps/platform/resources/views/filament/forms/components/restore-run-safety-decision.blade.php
M apps/platform/resources/views/filament/infolists/entries/restore-results.blade.php
M apps/platform/tests/Browser/Spec333RestoreCreateUxFinalProductizationSmokeTest.php
M apps/platform/tests/Browser/Spec335RestoreRunDetailProductizationSmokeTest.php
M docs/ui-ux-enterprise-audit/design-coverage-matrix.md
M docs/ui-ux-enterprise-audit/page-reports/ui-014-restore-runs.md
M docs/ui-ux-enterprise-audit/route-inventory.md
M docs/ui-ux-enterprise-audit/target-experience-briefs/restore-safety-workflow.md
M docs/ui-ux-enterprise-audit/unresolved-pages.md
?? apps/platform/app/Support/RestoreReadinessResolution/
?? apps/platform/tests/Feature/Filament/Spec390RestoreReadinessGuidanceTest.php
?? apps/platform/tests/Unit/Support/RestoreReadinessResolution/
?? specs/390-restore-readiness-resolution-adapter-v1/artifacts/
?? specs/390-restore-readiness-resolution-adapter-v1/contracts/
?? specs/browser-productization-bug-audit/
- Whether any files were modified: Yes. Audit screenshots/logs/report were written under
specs/browser-productization-bug-audit/. The final worktree also contained non-audit RestoreRun/docs/spec changes that appeared during the audit and were not edited by this audit. - Confirmation that only allowed report/screenshot/log files were modified: No. I only intentionally wrote allowed audit files, but the final worktree contains non-allowed modified/untracked files outside the audit directory.
- Tool/browser limitations: Integrated Browser connector failed during bootstrap with missing
sandboxPolicymetadata, so Playwright was used per fallback rule. Playwright route-sweep output was truncated by tool output limits, so screenshots, console logs, network logs, DOM snapshots, and read-only DB/source checks are the evidence basis. Local config hasapp.env=local,app.debug=true, andapp.name=Laravel, so Debugbar and debug error pages were visible in this audit environment.
Executive Summary
- Total bugs found: 10
- P0/P1/P2/P3 counts: P0=0, P1=6, P2=3, P3=1
- Top 10 issues to fix first:
Operationsworkspace hub times out and exposes a Laravel debug page.- Primary
Open evidence basisCTA points to superseded partial Evidence #30 while active complete Evidence #34 exists. - Customer Review Workspace also anchors to stale/superseded Evidence #30.
- Download-with-limitations links are visible while output is PII-bearing, incomplete, and not customer-ready.
- Required Permissions page shows
Present 0/ no configured permissions despite 15 granted permission rows. - Provider health is shown as
Healthywhile the same page says verification is stale and action required. - Environment dashboard
Open customer workspaceCTA opens a Review Pack detail page. - System login is branded
Laraveland exposes Debugbar in local audit. - Debugbar/source links and Vite client failures pollute the browser/runtime signal.
- Environment page title lacks a separator:
YPTW2Action needed - TenantPilot.
- Merge/customer-readiness recommendation: Not customer-ready. The Operations 500, evidence-anchor drift, provider readiness contradictions, and download-with-limitations affordances should block productization until fixed and re-smoked in browser.
Route Coverage
| Area | Route | Page name | Status | Screenshot path | Notes |
|---|---|---|---|---|---|
| Admin | /admin |
Workspace overview | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-admin-dashboard.png |
Redirected to /admin/workspaces/3/overview. |
| Workspace | /admin/workspaces/3/overview |
Workspace overview | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-workspace-overview.png |
Priority queue and recent ops visible. |
| Workspace | /admin/choose-workspace?choose=1 |
Choose workspace | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-choose-workspace.png |
Workspace switcher reachable. |
| Workspace | /admin/choose-environment |
Choose environment | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-choose-environment.png |
Environment switcher reachable. |
| Environment | /admin/workspaces/3/environments |
Managed environments | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-managed-environments.png |
Environment list captured. |
| Environment | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf |
Environment dashboard | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-environment-dashboard.png |
Multiple readiness contradictions. |
| Environment | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/required-permissions |
Required permissions | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-required-permissions.png |
Permission counts contradict DB rows. |
| Inventory | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/inventory |
Inventory items | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-inventory-items.png |
Route loaded. |
| Inventory | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/policies |
Policies | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-policies.png |
Route loaded. |
| Inventory | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/policy-versions |
Policy versions | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-policy-versions.png |
Route loaded. |
| Inventory | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/inventory/inventory-coverage |
Inventory coverage | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-inventory-coverage.png |
Route loaded. |
| Reporting | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/environment-reviews |
Environment reviews | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-environment-reviews.png |
Route loaded. |
| Reporting | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/stored-reports |
Stored reports | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-stored-reports.png |
Route loaded. |
| Reporting | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/review-packs |
Review packs | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-review-packs.png |
Route loaded. |
| Reporting | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/review-packs/32 |
View Review Pack | checked | specs/browser-productization-bug-audit/screenshots/BUG-003-internal-pack-download-enabled-while-not-usable.png |
Download action visible despite limitations. |
| Governance | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/findings |
Findings | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-findings.png |
First rows and first detail inspected. |
| Governance | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/findings/254 |
View Findings | checked | not captured separately | Detail showed technical IDs as admin-only evidence. |
| Governance | /admin/baseline-profiles |
Baseline profiles | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-baseline-profiles.png |
Route loaded. |
| Governance | /admin/baseline-snapshots |
Baseline snapshots | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-baseline-snapshots.png |
Route loaded. |
| Governance | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/baseline-compare |
Baseline compare | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-baseline-compare.png |
Route loaded. |
| Governance | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/evidence |
Evidence snapshots | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-evidence-snapshots.png |
Route loaded. |
| Governance | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/evidence/30 |
View Evidence Snapshot | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-evidence-snapshot-detail.png |
Superseded partial evidence. |
| Governance | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/finding-exceptions |
Risk exceptions | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-risk-exceptions.png |
Route loaded. |
| Backup/Restore | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/backup-schedules |
Backup schedules | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-backup-schedules.png |
Route loaded. |
| Backup/Restore | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/backup-sets |
Backup sets | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-backup-sets.png |
First three rows inspected; destructive actions verified read-only in source. |
| Backup/Restore | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/restore-runs |
Restore runs | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-restore-runs.png |
Preview row inspected. |
| Backup/Restore | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/restore-runs/create |
Create Restore Run | checked | not captured separately | Wizard inspected without submitting. |
| Directory | /admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/entra-groups |
Entra groups | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-entra-groups.png |
Route loaded. |
| Workspace-wide | /admin/finding-exceptions/queue?environment_id=4 |
Finding exceptions queue | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-finding-exceptions-queue.png |
Route loaded. |
| Workspace-wide | /admin/reviews?environment_id=4 |
Reviews | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-reviews-workspace-filtered.png |
Route loaded. |
| Workspace-wide | /admin/governance/inbox?environment_id=4 |
Governance inbox | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-governance-inbox.png |
Route loaded. |
| Workspace-wide | /admin/governance/decisions?environment_id=4 |
Decision register | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-decision-register.png |
Route loaded. |
| Workspace-wide | /admin/workspaces/3/operations?environment_id=4 |
Operations | blocked | specs/browser-productization-bug-audit/screenshots/BUG-001-operations-500-debug-page.png |
500 / timeout / debug page. |
| Workspace-wide | /admin/alerts?environment_id=4 |
Alerts | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-alerts.png |
Route loaded. |
| Workspace-wide | /admin/evidence/overview?environment_id=4 |
Evidence overview | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-evidence-overview.png |
Route loaded. |
| Workspace-wide | /admin/audit-log?environment_id=4 |
Audit log | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-audit-log.png |
Route loaded. |
| Workspace-wide | /admin/reviews/workspace?environment_id=4 |
Customer Review Workspace | checked | specs/browser-productization-bug-audit/screenshots/BUG-006-customer-review-download-and-stale-evidence.png |
Stale evidence and download-with-limitations. |
| Workspace admin | /admin/workspaces |
Workspaces | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-workspaces.png |
Route loaded. |
| Workspace admin | /admin/provider-connections?environment_id=4 |
Provider connections | checked | specs/browser-productization-bug-audit/screenshots/BUG-007-provider-health-healthy-while-verification-stale.png |
Provider verification contradiction. |
| Workspace admin | /admin/settings/workspace |
Workspace settings | checked | specs/browser-productization-bug-audit/screenshots/ROUTE-workspace-settings.png |
Route loaded. |
| System | /system |
System dashboard | blocked | specs/browser-productization-bug-audit/screenshots/BUG-008-system-login-default-laravel-branding.png |
Redirected to /system/login. |
| System | /system/directory/tenants |
System tenants | blocked | specs/browser-productization-bug-audit/screenshots/ROUTE-system-tenants.png |
System auth required. |
| System | /system/directory/workspaces |
System workspaces | blocked | specs/browser-productization-bug-audit/screenshots/ROUTE-system-workspaces.png |
System auth required. |
| System | /system/ops/runs |
System ops runs | blocked | specs/browser-productization-bug-audit/screenshots/ROUTE-system-ops-runs.png |
System auth required. |
| System | /system/ops/failures |
System ops failures | blocked | specs/browser-productization-bug-audit/screenshots/ROUTE-system-ops-failures.png |
System auth required. |
| System | /system/ops/stuck |
System ops stuck | blocked | specs/browser-productization-bug-audit/screenshots/ROUTE-system-ops-stuck.png |
System auth required. |
| System | /system/ops/controls |
System ops controls | blocked | specs/browser-productization-bug-audit/screenshots/ROUTE-system-ops-controls.png |
System auth required. |
| System | /system/ops/runbooks |
System ops runbooks | blocked | specs/browser-productization-bug-audit/screenshots/ROUTE-system-ops-runbooks.png |
System auth required. |
| System | /system/security/access-logs |
System access logs | blocked | specs/browser-productization-bug-audit/screenshots/ROUTE-system-access-logs.png |
System auth required. |
Bugs
BUG-001 — Operations index times out and exposes debug page
Severity: P1
Area: Workspace-wide / Operations
Route: http://localhost/admin/workspaces/3/operations?environment_id=4
Screenshot: specs/browser-productization-bug-audit/screenshots/BUG-001-operations-500-debug-page.png
Console/network errors: yes. Network log includes GET http://localhost/admin/workspaces/3/operations?environment_id=4 => [500] Internal Server Error; console includes Filament/Alpine reference errors and Vite client failures.
Actual:
Opening the Operations route takes roughly 40 seconds and lands on a Laravel debug/error page. The browser reports 35 console errors and 33 warnings. Laravel Boost last_error shows Maximum execution time of 30 seconds exceeded at Illuminate\Database\Eloquent\Concerns\HasAttributes.php:1577.
Expected: The Operations hub should render a bounded, paginated operations list or a controlled error state. Operators should never see a raw Laravel debug page or stack trace in a customer-ready environment.
Steps to reproduce:
- Authenticate in
/admin. - Open
http://localhost/admin/workspaces/3/operations?environment_id=4. - Wait for the request to complete.
Evidence:
- Screenshot:
specs/browser-productization-bug-audit/screenshots/BUG-001-operations-500-debug-page.png - Console:
specs/browser-productization-bug-audit/logs/console-warnings-final.txt - Network:
specs/browser-productization-bug-audit/logs/network-requests-final.txt - Read-only log: local error at
2026-06-20 09:19:07, max execution time exceeded.
Likely source:
apps/platform/app/Filament/Pages/Monitoring/Operations.php:610apps/platform/app/Filament/Resources/OperationRunResource.php:134
Suggested fix: Profile the Operations index render path with the environment filter applied. Bound expensive model attribute/accessor work in table columns/actions, avoid per-row heavy presenters, and replace local debug exposure with a controlled Filament error/empty state.
Product impact: Operations is a core operator workflow and the main drilldown for dashboard follow-up. A 500 blocks incident triage and can expose implementation details if debug mode leaks outside local.
BUG-002 — Primary evidence CTA points to superseded evidence
Severity: P1
Area: Environment dashboard / Evidence
Route: http://localhost/admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf
Screenshot: specs/browser-productization-bug-audit/screenshots/BUG-004-primary-evidence-cta-points-to-superseded-snapshot.png
Console/network errors: no current route error.
Actual:
The hero recommendation says Evidence basis is incomplete and the primary CTA Open evidence basis links to Evidence Snapshot #30. Read-only DB shows Evidence #30 is superseded and partial, while Evidence #34 is active and complete. The same dashboard's readiness proof Open evidence action points to #34.
Expected: A primary evidence CTA should either open the active/current evidence basis or explicitly explain that it is intentionally opening the anchored historical evidence that blocks the released review. It should not silently point to stale/superseded evidence while another proof section points to current evidence.
Steps to reproduce:
- Open the YPTW2 environment dashboard.
- Inspect the primary
Open evidence basisCTA. - Compare it with the
Readiness proof -> Evidence coverage -> Open evidenceaction.
Evidence:
- Screenshot:
specs/browser-productization-bug-audit/screenshots/BUG-004-primary-evidence-cta-points-to-superseded-snapshot.png - Read-only DB: Evidence #34 =
active/complete, generated2026-06-20 08:36:00; Evidence #30 =superseded/partial, generated2026-06-14 23:47:48.
Likely source:
apps/platform/app/Support/EnvironmentDashboard/EnvironmentDashboardSummaryBuilder.php:327apps/platform/app/Support/EnvironmentDashboard/EnvironmentDashboardSummaryBuilder.php:1568apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php:441
Suggested fix: Make the CTA source explicit: use latest active evidence for environment readiness, or label anchored released-review evidence as historical and show the current-evidence alternative next to it.
Product impact: Operators are sent to the wrong evidence object for the primary decision. That can cause stale governance conclusions and unnecessary remediation work.
BUG-003 — Customer Review Workspace anchors to stale evidence
Severity: P1
Area: Customer Review Workspace / Evidence
Route: http://localhost/admin/reviews/workspace?environment_id=4
Screenshot: specs/browser-productization-bug-audit/screenshots/BUG-006-customer-review-download-and-stale-evidence.png
Console/network errors: no current route error.
Actual:
Customer Review Workspace shows Evidence snapshot Available Generated Jun 14, 2026 23:47 and links View evidence snapshot to Evidence #30. That evidence is superseded/partial, while the environment has active/complete Evidence #34 generated on Jun 20, 2026.
Expected: Customer-facing review workspace should clearly distinguish released-review anchored evidence from current environment evidence. If it intentionally uses historical evidence, it should say "released-review evidence" and warn that newer complete evidence exists.
Steps to reproduce:
- Open
http://localhost/admin/reviews/workspace?environment_id=4. - Scroll to Supporting Reference.
- Inspect Evidence path and
View evidence snapshot.
Evidence:
- Screenshot:
specs/browser-productization-bug-audit/screenshots/BUG-006-customer-review-download-and-stale-evidence.png - Read-only DB evidence comparison from BUG-002.
Likely source:
apps/platform/app/Filament/Pages/Reviews/CustomerReviewWorkspace.php:745apps/platform/app/Filament/Pages/Reviews/CustomerReviewWorkspace.php:768
Suggested fix: Show both anchored release evidence and current evidence when they differ; update labels and warnings so customer review operators understand whether they are looking at historical or current proof.
Product impact: Customer-facing review workflows can appear stale or misleading even after evidence has been regenerated successfully.
BUG-004 — Download-with-limitations is enabled for PII-bearing, not-ready output
Severity: P1
Area: Customer Review / Review Packs
Route: http://localhost/admin/reviews/workspace?environment_id=4 and http://localhost/admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/review-packs/32
Screenshot: specs/browser-productization-bug-audit/screenshots/BUG-003-internal-pack-download-enabled-while-not-usable.png
Console/network errors: no current route error.
Actual:
Review Pack #32 says Internal only, Result trust Not usable yet, Coverage Partially complete, and This package includes internal or PII-bearing detail. Customer Review Workspace says Requires review, PII Contains PII, and Customer sharing still depends on readiness blockers, but still renders a direct Download review pack with limitations signed URL.
Expected: When output is not customer-ready and contains PII, direct download should be gated behind an explicit confirmation or moved behind a review/detail action. The UI should avoid presenting a direct download as a normal supporting action.
Steps to reproduce:
- Open Customer Review Workspace with
environment_id=4. - Inspect
Supporting actions. - Open Review Pack #32 and inspect header actions and output guidance.
Evidence:
- Screenshot:
specs/browser-productization-bug-audit/screenshots/BUG-003-internal-pack-download-enabled-while-not-usable.png - Screenshot:
specs/browser-productization-bug-audit/screenshots/BUG-006-customer-review-download-and-stale-evidence.png
Likely source:
apps/platform/app/Support/ReviewPacks/ReviewPackOutputResolutionGuidance.php:400apps/platform/app/Filament/Pages/Reviews/CustomerReviewWorkspace.php:2659
Suggested fix: Require an explicit confirmation for download-with-limitations, make the primary path open review/redaction checks, and only enable direct customer-safe downloads when the output state is customer-safe ready.
Product impact: An MSP/operator could download and share an internal or PII-bearing package despite on-page warnings that it is not ready. This is a customer disclosure risk.
BUG-005 — Required permissions detail shows zero present despite granted rows
Severity: P1
Area: Provider permissions / Required permissions
Route: http://localhost/admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf/required-permissions
Screenshot: specs/browser-productization-bug-audit/screenshots/BUG-005-required-permissions-zero-present-despite-grants.png
Console/network errors: no current route error.
Actual:
The page summary shows Missing (app) 0, Missing (delegated) 0, Present 0, Errors 0, says No required permissions are configured yet, and still recommends Run provider verification / Open admin consent. Read-only DB shows 15 managed_environment_permissions rows for environment 4, all status=granted, last checked 2026-05-14 20:42:51.
Expected: The detail page should show the 15 granted permissions as present but stale, and the next action should be refresh/verification, not imply no configured permissions or missing consent.
Steps to reproduce:
- Open Required permissions for YPTW2.
- Compare summary counts and issue text.
- Query
managed_environment_permissionsfor environment 4 read-only.
Evidence:
- Screenshot:
specs/browser-productization-bug-audit/screenshots/BUG-005-required-permissions-zero-present-despite-grants.png - DB:
SELECT status, COUNT(*) ...returned 15 granted rows.
Likely source:
apps/platform/app/Services/Intune/ManagedEnvironmentRequiredPermissionsViewModelBuilder.php:249apps/platform/app/Filament/Pages/EnvironmentRequiredPermissions.php:125
Suggested fix: Ensure stored granted rows are included in the default view/counts when evidence is stale. Default filter can still focus on missing permissions, but the summary must not collapse present granted rows to zero or "not configured".
Product impact: Operators cannot tell whether permissions are absent, stale, or complete. This can drive unnecessary admin-consent workflows and undermine trust in readiness gates.
BUG-006 — Provider health is marked Healthy while verification is stale
Severity: P1
Area: Provider connections / Environment readiness
Route: http://localhost/admin/provider-connections?environment_id=4
Screenshot: specs/browser-productization-bug-audit/screenshots/BUG-007-provider-health-healthy-while-verification-stale.png
Console/network errors: no current route error.
Actual:
Provider Connections top guidance says Action required / Provider verification required because stored verification evidence is stale. The table row simultaneously shows Verification Healthy and Provider capability Unknown. The environment dashboard also shows Provider permissions Needs attention while Provider Health Healthy repeats that the verification snapshot is stale.
Expected:
Provider health should not be green/healthy when the verification basis is stale and capabilities are unknown. It should read Needs attention, Stale, or Verification required consistently across dashboard and list.
Steps to reproduce:
- Open Provider Connections with
environment_id=4. - Compare the top action-required banner with the table
VerificationandProvider capabilitycolumns. - Open the environment dashboard and compare
Provider permissionswithProvider Health.
Evidence:
- Screenshot:
specs/browser-productization-bug-audit/screenshots/BUG-007-provider-health-healthy-while-verification-stale.png - Screenshot:
specs/browser-productization-bug-audit/screenshots/ROUTE-environment-dashboard.png
Likely source:
apps/platform/app/Support/EnvironmentDashboard/EnvironmentDashboardSummaryBuilder.php:1708apps/platform/app/Filament/Resources/ProviderConnectionResource.php(not line-investigated)
Suggested fix: Make provider health tone/status consume permission freshness and capability uncertainty. A stale verification snapshot should downgrade health even when the last stored grant set was complete.
Product impact: Provider readiness gates can look green while write/read capability checks are unknown or stale, causing unsafe operational decisions.
BUG-007 — Open customer workspace CTA opens Review Pack detail
Severity: P2
Area: Environment dashboard / Review output
Route: http://localhost/admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf
Screenshot: specs/browser-productization-bug-audit/screenshots/BUG-002-customer-workspace-cta-opens-review-pack.png
Console/network errors: no.
Actual:
The dashboard link labelled Open customer workspace navigates to .../review-packs/32, whose heading is View Review Pack. It does not open Customer Review Workspace.
Expected:
A link labelled Open customer workspace should open Customer Review Workspace, or the label should say Open review pack.
Steps to reproduce:
- Open the YPTW2 environment dashboard.
- Click
Open customer workspace. - Observe the destination heading.
Evidence:
- Screenshot:
specs/browser-productization-bug-audit/screenshots/BUG-002-customer-workspace-cta-opens-review-pack.png
Likely source:
apps/platform/app/Support/EnvironmentDashboard/EnvironmentDashboardSummaryBuilder.php:327apps/platform/app/Support/EnvironmentDashboard/EnvironmentDashboardSummaryBuilder.php:2038
Suggested fix: Align label and destination: use CustomerReviewWorkspace URL for this label, or change the CTA text when the action opens a review pack artifact.
Product impact: Operators lose orientation between customer workspace, review detail, and review pack artifact. This increases the chance of sharing or reviewing the wrong surface.
BUG-008 — System login uses default Laravel branding
Severity: P2
Area: System / Authentication
Route: http://localhost/system
Screenshot: specs/browser-productization-bug-audit/screenshots/BUG-008-system-login-default-laravel-branding.png
Console/network errors: no current route error.
Actual:
The system login page title is Login - Laravel, the card brand text is Laravel, and a Debugbar icon is visible in the lower-left corner. Read-only config shows app.name=Laravel.
Expected: System login should be TenantPilot-branded and make it clear this is the system/admin panel. Debugbar should not be visible outside local development and should not be part of customer-ready screenshots.
Steps to reproduce:
- Open
http://localhost/system. - Observe redirect to
/system/login. - Inspect title and login card branding.
Evidence:
- Screenshot:
specs/browser-productization-bug-audit/screenshots/BUG-008-system-login-default-laravel-branding.png - Config read-only:
app.name=Laravel,app.debug=true,app.env=local.
Likely source:
config/app.php/ environmentAPP_NAME(not line-investigated)- System panel login branding configuration (not line-investigated)
Suggested fix: Set application/panel branding to TenantPilot and ensure Debugbar is disabled in staging/production validation environments.
Product impact: Default framework branding looks unfinished and makes system/admin scope less clear for platform admins.
BUG-009 — Debugbar and asset failures pollute browser runtime
Severity: P2
Area: Cross-cutting / Frontend runtime
Route: Multiple admin and system routes
Screenshot: specs/browser-productization-bug-audit/screenshots/BUG-001-operations-500-debug-page.png
Console/network errors: yes. Console logs include filamentSchema is not defined, filamentSchemaComponent is not defined, filamentTable is not defined, selectFormComponent is not defined, and network failures for http://localhost:5173/@vite/client.
Actual:
Debugbar links and phpstorm://open?... links appear in the DOM on admin/system pages. Network logs include repeated Debugbar requests and Vite client failures. The Operations route exposed a full debug error surface.
Expected: Browser validation for productization should run with compiled/stable assets and no Debugbar/source-link leakage. If local debug remains enabled, it should be recorded as a tooling limitation and not confused with customer UX.
Steps to reproduce:
- Open several admin routes.
- Inspect console warnings and network requests.
- Inspect DOM links for
phpstorm://and_debugbar.
Evidence:
- Console:
specs/browser-productization-bug-audit/logs/console-warnings-final.txt - Network:
specs/browser-productization-bug-audit/logs/network-requests-final.txt - Screenshot:
specs/browser-productization-bug-audit/screenshots/BUG-001-operations-500-debug-page.png
Likely source:
- Local environment config/assets; exact source not investigated.
Suggested fix:
Run audit/staging with APP_DEBUG=false, Debugbar disabled, and built Filament/Vite assets. Add a smoke check that fails on missing Filament JS globals or Vite client load failures.
Product impact: JS runtime failures can make filters/actions unreliable and debug surfaces can obscure real customer UX issues.
BUG-010 — Environment page title has missing separator
Severity: P3
Area: Environment dashboard / Browser metadata
Route: http://localhost/admin/workspaces/3/environments/b0091e5d-944f-4a34-bcd9-12cbfb7b75cf
Screenshot: specs/browser-productization-bug-audit/screenshots/ROUTE-environment-dashboard.png
Console/network errors: no.
Actual:
The browser title is YPTW2Action needed - TenantPilot with no space or separator between the environment name and status.
Expected:
The page title should read something like YPTW2 - Action needed - TenantPilot.
Steps to reproduce:
- Open the YPTW2 environment dashboard.
- Inspect browser title.
Evidence:
- Screenshot:
specs/browser-productization-bug-audit/screenshots/ROUTE-environment-dashboard.png - Playwright page title:
YPTW2Action needed - TenantPilot
Likely source:
- Environment dashboard page title composition, exact file not investigated.
Suggested fix: Add a separator between environment name and status in title composition.
Product impact: Minor polish issue, but it makes browser tabs/history look unprofessional.
Cross-cutting Patterns
- Misleading readiness labels: Provider permissions, provider health, evidence basis, and customer output readiness use inconsistent states for the same underlying data.
- Stale data displayed as current: Superseded Evidence #30 remains the primary/customer evidence path even though active Evidence #34 exists.
- Workspace/environment scope confusion: Environment dashboard mixes Customer Workspace, Review Pack, Review Detail, and Evidence Detail labels without clearly naming the destination.
- Customer-facing report/disclosure problems: Direct download links are visible while the page says the package contains PII and requires review.
- Debugbar/stack trace leakage: Local debug settings exposed Debugbar,
phpstorm://source links, and a Laravel error page during the audit. - Broken redirects/back/navigation flows: Operations links from dashboard, backup sets, customer workspace, findings, and notifications route to a hub that currently 500s.
- Inconsistent badges/tones:
Healthyappears next to stale/unknown provider capability states. - Raw IDs/GUIDs in UI: Admin finding detail shows provider GUIDs and fingerprints in technical sections; acceptable for admin detail, but these must remain hidden from customer output.
Suggested Follow-up Specs
-
Proposed spec number placeholder:
SPEC-OPS-001Title: Stabilize operations hub rendering and frontend runtime. Bugs covered: BUG-001, BUG-009. Why this should be one spec: Operations is the common drilldown from many surfaces, and the JS/runtime/debug failure affects table actions and filters. Acceptance criteria summary: Operations index renders under environment filters in under 3 seconds; no debug page; no Filament JS missing-global console errors; route has controlled empty/error states. -
Proposed spec number placeholder:
SPEC-EVIDENCE-001Title: Reconcile current vs anchored evidence across dashboards and customer review. Bugs covered: BUG-002, BUG-003. Why this should be one spec: Both bugs are evidence-anchor selection and labeling issues across environment and customer-review surfaces. Acceptance criteria summary: Active evidence and released-review anchored evidence are separately labelled; primary CTAs point to the intended evidence; stale/superseded evidence is never silently presented as current. -
Proposed spec number placeholder:
SPEC-OUTPUT-001Title: Gate review-pack downloads by customer readiness and PII state. Bugs covered: BUG-004, BUG-007. Why this should be one spec: Download affordances and customer workspace/review-pack navigation are part of the same output handoff model. Acceptance criteria summary: Direct download only for customer-safe-ready output; limitation downloads require confirmation and explicit internal-only language; labels match destinations. -
Proposed spec number placeholder:
SPEC-PROVIDER-001Title: Normalize provider permission and health freshness semantics. Bugs covered: BUG-005, BUG-006. Why this should be one spec: Permission counts, stale verification, provider connection health, and capability readiness must share one status taxonomy. Acceptance criteria summary: Granted stale permissions count as present-but-stale; health tone downgrades on stale verification; list, detail, and dashboard states match. -
Proposed spec number placeholder:
SPEC-SYSTEM-001Title: Productize system panel login and debug configuration checks. Bugs covered: BUG-008, BUG-009, BUG-010. Why this should be one spec: Branding, debug settings, and metadata polish are cross-panel readiness concerns. Acceptance criteria summary: TenantPilot branding on system login; no Debugbar/source links in staging/productization; browser titles are formatted consistently.
Appendix
- Screenshot index:
- 47
ROUTE-*screenshots underspecs/browser-productization-bug-audit/screenshots/ - Bug screenshots:
BUG-001-operations-500-debug-page.png,BUG-002-customer-workspace-cta-opens-review-pack.png,BUG-003-internal-pack-download-enabled-while-not-usable.png,BUG-004-primary-evidence-cta-points-to-superseded-snapshot.png,BUG-005-required-permissions-zero-present-despite-grants.png,BUG-006-customer-review-download-and-stale-evidence.png,BUG-007-provider-health-healthy-while-verification-stale.png,BUG-008-system-login-default-laravel-branding.png
- 47
- Console error index:
specs/browser-productization-bug-audit/logs/console-warnings.txtspecs/browser-productization-bug-audit/logs/console-warnings-final.txt- Key entries: Filament/Alpine missing globals, Vite client failure, Operations debug-page stack traces.
- Network error index:
specs/browser-productization-bug-audit/logs/network-requests.txtspecs/browser-productization-bug-audit/logs/network-requests-final.txt- Key entries: Operations 500, Vite client connection reset, Debugbar aborted requests, old Microsoft login favicon/SSO probe noise.
- Blocked routes:
/admin/workspaces/3/operations?environment_id=4blocked by 500/timeout./system/*routes blocked by system auth;/system/loginwas inspected.
- Not reachable routes:
- Authenticated system panel internals were not reachable without a system login session.
- Dangerous actions intentionally not executed:
- Evidence:
Refresh evidence,Expire snapshot. - Provider Connections:
Check connection,Inventory sync,Compliance snapshot,Enable dedicated override,Disable connection. - Required Permissions:
Run provider verification, externalOpen admin consent. - Review/customer output:
Download review pack with limitations,Download internal review pack,View internal report,Regenerate review pack,Acknowledge review. - Findings:
Triage,Assign,Resolve,Close,Request exception, all bulk variants. - Backup/Restore: archive/restore/force-delete and bulk archive actions, restore wizard submit/execute steps.
- Evidence:
- Read-only code/db inspections performed:
git status --short,git branch --show-current,git rev-parse HEAD.- Laravel routes via Boost
list_routes. - Laravel config via Boost
get_configforapp.name,app.env,app.debug,debugbar.enabled. - Laravel logs via Boost
last_errorandread_log_entries. - Read-only DB queries for
evidence_snapshots,managed_environment_permissions,operation_runs,backup_sets,restore_runs. - Source reads for Operations, EnvironmentDashboardSummaryBuilder, ReviewPackOutputResolutionGuidance, CustomerReviewWorkspace, RequiredPermissions, BackupSetResource.
- Tool/browser limitations:
- Integrated Browser control was unavailable due missing
sandboxPolicymetadata, so Playwright was used. - Full route-sweep tool output was truncated; screenshots/logs and targeted DOM evaluations were used for durable evidence.
- Local debug mode and Debugbar were enabled, so debug artifacts are recorded as both observed risk and local-environment limitation.
- Integrated Browser control was unavailable due missing