Skip to content

fix(legal-documents): suppress 403 for non-admins on /legal scene#59230

Merged
rafaeelaudibert merged 2 commits into
masterfrom
posthog-code/fix-legal-documents-403-noise
May 20, 2026
Merged

fix(legal-documents): suppress 403 for non-admins on /legal scene#59230
rafaeelaudibert merged 2 commits into
masterfrom
posthog-code/fix-legal-documents-403-noise

Conversation

@posthog
Copy link
Copy Markdown
Contributor

@posthog posthog Bot commented May 20, 2026

Problem

Non-admin organization members landing on the /legal scene triggered a 403 Your organization access level is insufficient. from GET /api/organizations/{id}/legal_documents/, which surfaced as a fresh error tracking issue (fingerprint 4045923f…). The scene itself looked fine because LegalDocumentsScene.tsx already short-circuits the UI for non-admins with an "Admin access required" banner — but the loader fired regardless, so the symptom was error-tracking noise and a failed loader state.

The mismatch was introduced when the IsOrganizationAdminOrOwner permission was added to the backend list endpoint on top of the original scene, which renders for any org member.

Changes

In products/legal_documents/frontend/scenes/legalDocumentsLogic.ts:

  • Primary gate: loadLegalDocuments returns [] early when isAdminOrOwner === false && currentOrganization is loaded — same shape used in couponLogic. The extra && currentOrganization clause avoids skipping the request during the brief window where isAdminOrOwner is false only because membership_level is still undefined.
  • Defense in depth: wrap api.legalDocumentsList in a try/catch and swallow ApiError with status === 403, returning []. Future permission tightening can't re-introduce the same error-tracking noise.
  • Late-load handler: listen on loadCurrentOrganizationSuccess and re-run the loader once the org resolves, if it found no documents and the user is an admin/owner. Covers the case where afterMount fires before the organization is loaded.

How did you test this code?

I'm an agent (PostHog Code). I did not run the dev server or manually click through the /legal scene. I read couponLogic to confirm the established pattern, and reviewed the diff for behavior under each membership state. No new unit tests were added — the loader's existing surface is exercised through the scene; happy to add one if a reviewer wants it. Lint/typecheck couldn't be run locally because dependencies aren't installed in the agent workspace; CI will validate.

Publish to changelog?

no

🤖 Agent context

Authored by PostHog Code. The signal report pinpointed both the root cause (loadLegalDocuments runs unconditionally in afterMount, has no admin-level guard or try/catch) and the backend permission introducing the 403. The fix follows the existing couponLogic pattern — both the membership-level guard and the loadCurrentOrganizationSuccess re-run hook — so anyone familiar with that scene can recognize the shape immediately. The 403 swallow inside the loader was added because the suggested "defense in depth" prevents this exact kind of regression if backend permissions tighten again later. No changes to the backend permission or to the scene UI; the banner already covers the user-facing affordance.

Non-admin org members landing on /legal triggered a 403 from the
legal-documents list endpoint and surfaced a fresh error tracking
issue, even though LegalDocumentsScene already short-circuits the UI
for non-admins. The loader had no guard on membership level and no
try/catch, so the IsOrganizationAdminOrOwner rejection bubbled up.

Gate loadLegalDocuments on organizationLogic's isAdminOrOwner selector
(mirroring couponLogic), and as defense in depth swallow 403 ApiError
responses inside the loader. Re-run the load on
loadCurrentOrganizationSuccess in case afterMount fired before the
organization resolved.

Generated-By: PostHog Code
Task-Id: 8dbd1c51-9b88-45a3-8b6f-485560bd8307
@assign-reviewers-posthog assign-reviewers-posthog Bot requested review from a team, MattBro, fercgomes and rafaeelaudibert and removed request for a team May 20, 2026 16:07
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 20, 2026

Size Change: -6.81 kB (-0.01%)

Total Size: 118 MB

📦 View Changed
Filename Size Change
frontend/dist/WorkflowScene 104 kB -6.81 kB (-6.17%)
ℹ️ View Unchanged
Filename Size Change
frontend/dist/368Hedgehogs 5.51 kB 0 B
frontend/dist/abap 14.2 kB 0 B
frontend/dist/AccountConnected 2.99 kB 0 B
frontend/dist/Action 24.8 kB -107 B (-0.43%)
frontend/dist/Actions 1.2 kB 0 B
frontend/dist/AdvancedActivityLogsScene 39.9 kB 0 B
frontend/dist/AgenticAuthorize 5.7 kB 0 B
frontend/dist/apex 3.99 kB 0 B
frontend/dist/ApprovalDetail 16.5 kB 0 B
frontend/dist/architecture-7EHR7CIX 372 B 0 B
frontend/dist/architectureDiagram-3BPJPVTR 151 kB 0 B
frontend/dist/array.full.es5.js 347 kB 0 B
frontend/dist/array.full.js 427 kB 0 B
frontend/dist/array.js 191 kB 0 B
frontend/dist/AsyncMigrations 13.4 kB 0 B
frontend/dist/AuthenticatedShell 176 kB 0 B
frontend/dist/AuthorizationStatus 969 B 0 B
frontend/dist/azcli 885 B 0 B
frontend/dist/bat 1.88 kB 0 B
frontend/dist/BatchExportScene 60.8 kB 0 B
frontend/dist/bicep 2.59 kB 0 B
frontend/dist/Billing 731 B 0 B
frontend/dist/BillingSection 21 kB 0 B
frontend/dist/blockDiagram-GPEHLZMM 72.5 kB 0 B
frontend/dist/BoxPlot 5.25 kB 0 B
frontend/dist/browserAll-0QZMN1W2 37.4 kB 0 B
frontend/dist/BusinessKnowledgeScene 18.9 kB 0 B
frontend/dist/ButtonPrimitives 762 B -34 B (-4.27%)
frontend/dist/c4Diagram-AAUBKEIU 70.8 kB 0 B
frontend/dist/CalendarHeatMap 9 kB 0 B
frontend/dist/cameligo 2.23 kB 0 B
frontend/dist/changeRequestsLogic 782 B 0 B
frontend/dist/classDiagram-4FO5ZUOK 1.28 kB 0 B
frontend/dist/classDiagram-v2-Q7XG4LA2 1.28 kB 0 B
frontend/dist/CLIAuthorize 11.6 kB 0 B
frontend/dist/CLILive 4.26 kB 0 B
frontend/dist/clojure 9.68 kB 0 B
frontend/dist/CodeEditorInline 730 B +34 B (+4.89%) 🔍
frontend/dist/coffee 3.63 kB 0 B
frontend/dist/Cohort 28.2 kB 0 B
frontend/dist/CohortCalculationHistory 6.47 kB 0 B
frontend/dist/Cohorts 9.64 kB 0 B
frontend/dist/ConfirmOrganization 4.76 kB 0 B
frontend/dist/conversations.js 67.3 kB 0 B
frontend/dist/cose-bilkent-S5V4N54A 82.8 kB 0 B
frontend/dist/Coupons 963 B 0 B
frontend/dist/cpp 5.33 kB 0 B
frontend/dist/Create 1.08 kB +179 B (+19.93%) 🚨
frontend/dist/crisp-chat-integration.js 1.97 kB 0 B
frontend/dist/csharp 4.56 kB 0 B
frontend/dist/csp 1.45 kB 0 B
frontend/dist/css 4.54 kB 0 B
frontend/dist/cssMode 4.2 kB 0 B
frontend/dist/CustomCssScene 3.8 kB 0 B
frontend/dist/CustomerAnalyticsConfigurationScene 2.27 kB 0 B
frontend/dist/CustomerAnalyticsScene 28.1 kB 0 B
frontend/dist/CustomerJourneyBuilderScene 2.04 kB -35 B (-1.69%)
frontend/dist/CustomerJourneyTemplatesScene 7.75 kB 0 B
frontend/dist/customizations.full.js 18 kB 0 B
frontend/dist/CyclotronJobInputAssignee 1.54 kB -35 B (-2.23%)
frontend/dist/CyclotronJobInputBusinessHours 2.96 kB +35 B (+1.2%)
frontend/dist/CyclotronJobInputTicketTags 954 B 0 B
frontend/dist/cypher 3.42 kB 0 B
frontend/dist/dagre-BM42HDAG 11.9 kB 0 B
frontend/dist/dart 4.29 kB 0 B
frontend/dist/Dashboard 1.38 kB 0 B
frontend/dist/Dashboards 21.8 kB 0 B
frontend/dist/DashboardTemplateCopyScene 5.95 kB 0 B
frontend/dist/DataManagementScene 884 B 0 B
frontend/dist/DataPipelinesNewScene 2.55 kB 0 B
frontend/dist/DataWarehouseScene 46.5 kB 0 B
frontend/dist/Deactivated 1.37 kB 0 B
frontend/dist/dead-clicks-autocapture.js 14.3 kB 0 B
frontend/dist/DeadLetterQueue 5.63 kB 0 B
frontend/dist/DebugScene 20.2 kB 0 B
frontend/dist/decompressionWorker 2.85 kB 0 B
frontend/dist/decompressionWorker.js 2.85 kB 0 B
frontend/dist/DecompressionWorkerManager 329 B 0 B
frontend/dist/DefinitionEdit 17.1 kB 0 B
frontend/dist/DefinitionView 24.3 kB 0 B
frontend/dist/Deployment 3.9 kB 0 B
frontend/dist/DeploymentProject 5.43 kB -35 B (-0.64%)
frontend/dist/Deployments 9.17 kB -36 B (-0.39%)
frontend/dist/DestinationsScene 2.92 kB 0 B
frontend/dist/diagram-2AECGRRQ 6.66 kB 0 B
frontend/dist/diagram-5GNKFQAL 3.61 kB 0 B
frontend/dist/diagram-KO2AKTUF 11.5 kB 0 B
frontend/dist/diagram-LMA3HP47 5.02 kB 0 B
frontend/dist/diagram-OG6HWLK6 11.8 kB 0 B
frontend/dist/dist 643 B 0 B
frontend/dist/dockerfile 1.91 kB 0 B
frontend/dist/EarlyAccessFeature 991 B +136 B (+15.91%) ⚠️
frontend/dist/EarlyAccessFeatures 3.05 kB 0 B
frontend/dist/ecl 5.38 kB 0 B
frontend/dist/EditorScene 1.38 kB 0 B
frontend/dist/elixir 10.3 kB 0 B
frontend/dist/elk.bundled 1.44 MB 0 B
frontend/dist/EmailMFAVerify 3.26 kB 0 B
frontend/dist/EndpointScene 39.9 kB 0 B
frontend/dist/EndpointsScene 21.8 kB 0 B
frontend/dist/erDiagram-TEJ5UH35 27.7 kB 0 B
frontend/dist/ErrorTrackingIssueFingerprintsScene 7.22 kB 0 B
frontend/dist/ErrorTrackingIssueScene 100 kB 0 B
frontend/dist/ErrorTrackingScene 27 kB -75 B (-0.28%)
frontend/dist/EvaluationTemplates 813 B +34 B (+4.36%)
frontend/dist/eventmodeling-FCH6USID 375 B 0 B
frontend/dist/EventsScene 2.81 kB 0 B
frontend/dist/exception-autocapture.js 11.8 kB 0 B
frontend/dist/Experiment 205 kB 0 B
frontend/dist/Experiments 19.8 kB 0 B
frontend/dist/exporter 19 kB 0 B
frontend/dist/exporter.js 19 kB 0 B
frontend/dist/ExporterDashboardScene 1.78 kB 0 B
frontend/dist/ExporterHeatmapScene 19.5 kB 0 B
frontend/dist/ExporterInsightScene 2.88 kB 0 B
frontend/dist/ExporterInterviewScene 309 kB 0 B
frontend/dist/ExporterNotebookScene 2.71 MB 0 B
frontend/dist/ExporterRecordingScene 995 B 0 B
frontend/dist/exporterSharedChunkAnchors 288 kB 0 B
frontend/dist/exporterSharedChunkAnchors.js 288 kB 0 B
frontend/dist/ExportsScene 4.23 kB 0 B
frontend/dist/FeatureFlag 134 kB 0 B
frontend/dist/FeatureFlags 844 B 0 B
frontend/dist/FeatureFlagTemplatesScene 7.28 kB 0 B
frontend/dist/FlappyHog 5.99 kB -34 B (-0.56%)
frontend/dist/flow9 1.85 kB 0 B
frontend/dist/flowDiagram-I6XJVG4X 61.6 kB 0 B
frontend/dist/freemarker2 16.7 kB 0 B
frontend/dist/fsharp 3.02 kB 0 B
frontend/dist/ganttDiagram-6RSMTGT7 50.9 kB 0 B
frontend/dist/gitGraph-WXDBUCRP 360 B 0 B
frontend/dist/gitGraphDiagram-PVQCEYII 30.2 kB 0 B
frontend/dist/go 2.69 kB 0 B
frontend/dist/graphql 2.3 kB 0 B
frontend/dist/Group 15.1 kB 0 B
frontend/dist/Groups 4.15 kB 0 B
frontend/dist/GroupsNew 7.58 kB 0 B
frontend/dist/handlebars 7.38 kB 0 B
frontend/dist/hcl 3.63 kB 0 B
frontend/dist/HealthCategoryDetailScene 7.48 kB 0 B
frontend/dist/HealthScene 12.4 kB 0 B
frontend/dist/HeatmapNewScene 5.27 kB 0 B
frontend/dist/HeatmapRecordingScene 4.25 kB 0 B
frontend/dist/HeatmapScene 6.8 kB 0 B
frontend/dist/HeatmapsScene 4.13 kB 0 B
frontend/dist/hls 394 kB 0 B
frontend/dist/HogFunctionScene 59.5 kB 0 B
frontend/dist/hogql_parser_wasm_browser 1.53 MB 0 B
frontend/dist/HogRepl 7.61 kB 0 B
frontend/dist/html 5.62 kB 0 B
frontend/dist/htmlMode 4.65 kB 0 B
frontend/dist/image-blob-reduce.esm 49.5 kB 0 B
frontend/dist/InboxScene 63.1 kB 0 B
frontend/dist/index 60.7 kB 0 B
frontend/dist/index.js 60.7 kB 0 B
frontend/dist/info-J43DQDTF 348 B 0 B
frontend/dist/infoDiagram-5YYISTIA 1.32 kB 0 B
frontend/dist/ini 1.14 kB 0 B
frontend/dist/InsightQuickStart 5.67 kB 0 B
frontend/dist/InsightScene 34.6 kB 0 B
frontend/dist/IntegrationsRedirect 976 B 0 B
frontend/dist/intercom-integration.js 2.03 kB 0 B
frontend/dist/InviteSignup 15.2 kB 0 B
frontend/dist/ishikawaDiagram-YF4QCWOH 18 kB 0 B
frontend/dist/java 3.26 kB 0 B
frontend/dist/javascript 1.02 kB 0 B
frontend/dist/journeyDiagram-JHISSGLW 24 kB 0 B
frontend/dist/jsonMode 13.9 kB 0 B
frontend/dist/julia 7.26 kB 0 B
frontend/dist/kanban-definition-UN3LZRKU 21.2 kB 0 B
frontend/dist/katex 266 kB 0 B
frontend/dist/kotlin 3.44 kB 0 B
frontend/dist/lazy 146 kB 0 B
frontend/dist/LegacyPluginScene 20.9 kB 0 B
frontend/dist/LegalDocumentNewScene 59.6 kB 0 B
frontend/dist/LegalDocumentsScene 5.17 kB -35 B (-0.67%)
frontend/dist/LemonTextAreaMarkdown 740 B 0 B
frontend/dist/less 3.93 kB 0 B
frontend/dist/lexon 2.47 kB 0 B
frontend/dist/lib 2.25 kB 0 B
frontend/dist/Link 733 B +34 B (+4.86%) 🔍
frontend/dist/LinkScene 25 kB 0 B
frontend/dist/LinksScene 4.44 kB 0 B
frontend/dist/liquid 4.57 kB 0 B
frontend/dist/LiveDebugger 19.4 kB 0 B
frontend/dist/LiveEventsTable 5.46 kB 0 B
frontend/dist/LLMAnalyticsClusterScene 21.5 kB +40 B (+0.19%)
frontend/dist/LLMAnalyticsClustersScene 54.8 kB 0 B
frontend/dist/LLMAnalyticsDatasetScene 20.8 kB 0 B
frontend/dist/LLMAnalyticsDatasetsScene 3.52 kB +36 B (+1.03%)
frontend/dist/LLMAnalyticsEvaluation 59.7 kB 0 B
frontend/dist/LLMAnalyticsEvaluationsScene 28 kB 0 B
frontend/dist/LLMAnalyticsPlaygroundScene 37.6 kB 0 B
frontend/dist/LLMAnalyticsScene 118 kB 0 B
frontend/dist/LLMAnalyticsSessionScene 13.6 kB 0 B
frontend/dist/LLMAnalyticsTag 27.3 kB -36 B (-0.13%)
frontend/dist/LLMAnalyticsTagsScene 7.15 kB 0 B
frontend/dist/LLMAnalyticsTraceScene 130 kB -39 B (-0.03%)
frontend/dist/LLMAnalyticsUsers 730 B 0 B
frontend/dist/LLMASessionFeedbackDisplay 5.08 kB 0 B
frontend/dist/LLMPromptScene 29 kB 0 B
frontend/dist/LLMPromptsScene 4.68 kB 0 B
frontend/dist/LLMSkillScene 827 B 0 B
frontend/dist/LLMSkillsScene 844 B +34 B (+4.2%)
frontend/dist/Login 8.86 kB 0 B
frontend/dist/Login2FA 4.49 kB 0 B
frontend/dist/logs.js 38.9 kB 0 B
frontend/dist/LogsAlertDetailScene 17.2 kB -38 B (-0.22%)
frontend/dist/LogsSamplingDetailScene 5.08 kB 0 B
frontend/dist/LogsSamplingNewScene 2.11 kB 0 B
frontend/dist/LogsScene 18.1 kB 0 B
frontend/dist/lua 2.16 kB 0 B
frontend/dist/m3 2.85 kB 0 B
frontend/dist/main 819 kB 0 B
frontend/dist/ManagedMigration 14.4 kB -36 B (-0.25%)
frontend/dist/markdown 3.83 kB 0 B
frontend/dist/MarketingAnalyticsScene 40.3 kB 0 B
frontend/dist/MaterializedColumns 10.4 kB 0 B
frontend/dist/Max 888 B 0 B
frontend/dist/mdx 5.43 kB 0 B
frontend/dist/memlens.lib.bundle 27.9 kB 0 B
frontend/dist/mermaid.core 28.5 kB 0 B
frontend/dist/MermaidDiagram 2.11 kB 0 B
frontend/dist/MessageTemplate 16.5 kB 0 B
frontend/dist/MetricsScene 1.08 kB 0 B
frontend/dist/mindmap-definition-RKZ34NQL 24.8 kB 0 B
frontend/dist/mips 2.62 kB 0 B
frontend/dist/ModelsScene 18.9 kB 0 B
frontend/dist/MonacoDiffEditor 471 B 0 B
frontend/dist/monacoEditorWorker 288 kB 0 B
frontend/dist/monacoEditorWorker.js 288 kB 0 B
frontend/dist/monacoJsonWorker 419 kB 0 B
frontend/dist/monacoJsonWorker.js 419 kB 0 B
frontend/dist/monacoTsWorker 7.02 MB 0 B
frontend/dist/monacoTsWorker.js 7.02 MB 0 B
frontend/dist/MoveToPostHogCloud 4.7 kB 0 B
frontend/dist/msdax 4.95 kB 0 B
frontend/dist/mysql 11.3 kB 0 B
frontend/dist/NavTabChat 7.41 kB 0 B
frontend/dist/NewSourceScene 1.05 kB 0 B
frontend/dist/NewTabScene 1.72 kB 0 B
frontend/dist/NodeDetailScene 16.9 kB +33 B (+0.2%)
frontend/dist/NotebookCanvasScene 3.55 kB 0 B
frontend/dist/NotebookPanel 5.51 kB 0 B
frontend/dist/NotebookScene 8.75 kB 0 B
frontend/dist/NotebooksScene 7.84 kB 0 B
frontend/dist/OAuthAuthorize 844 B 0 B
frontend/dist/objective-c 2.44 kB 0 B
frontend/dist/Onboarding 791 kB 0 B
frontend/dist/OnboardingCouponRedemption 1.44 kB 0 B
frontend/dist/packet-YPE3B663 354 B 0 B
frontend/dist/pascal 3.03 kB 0 B
frontend/dist/pascaligo 2.04 kB 0 B
frontend/dist/passkeyLogic 722 B +34 B (+4.94%) 🔍
frontend/dist/PasswordReset 4.6 kB 0 B
frontend/dist/PasswordResetComplete 3.23 kB 0 B
frontend/dist/PendingDeletion 2.38 kB 0 B
frontend/dist/perl 8.29 kB 0 B
frontend/dist/PersonScene 18.5 kB 0 B
frontend/dist/PersonsScene 5.91 kB 0 B
frontend/dist/pgsql 13.5 kB 0 B
frontend/dist/php 8.06 kB 0 B
frontend/dist/pie-LRSECV5Y 345 B 0 B
frontend/dist/pieDiagram-4H26LBE5 4.92 kB 0 B
frontend/dist/PipelineStatusScene 9.35 kB 0 B
frontend/dist/pla 1.72 kB 0 B
frontend/dist/posthog 146 kB 0 B
frontend/dist/postiats 7.9 kB 0 B
frontend/dist/powerquery 17 kB 0 B
frontend/dist/powershell 3.31 kB 0 B
frontend/dist/PreflightCheck 5.81 kB 0 B
frontend/dist/product-tours.js 115 kB 0 B
frontend/dist/ProductTour 275 kB 0 B
frontend/dist/ProductTours 4.92 kB 0 B
frontend/dist/ProjectHomepage 19.9 kB 0 B
frontend/dist/protobuf 9.09 kB 0 B
frontend/dist/pug 4.86 kB 0 B
frontend/dist/python 4.8 kB 0 B
frontend/dist/qsharp 3.23 kB 0 B
frontend/dist/quadrantDiagram-W4KKPZXB 34.4 kB 0 B
frontend/dist/QueryPerformance 8.86 kB 0 B
frontend/dist/r 3.16 kB 0 B
frontend/dist/radar-GUYGQ44K 351 B 0 B
frontend/dist/razor 9.38 kB 0 B
frontend/dist/react-json-view 121 kB 0 B
frontend/dist/recorder-v2.js 98.6 kB 0 B
frontend/dist/recorder.js 98.6 kB 0 B
frontend/dist/redis 3.59 kB 0 B
frontend/dist/redshift 11.8 kB 0 B
frontend/dist/RegionMap 29.6 kB -35 B (-0.12%)
frontend/dist/render-query 26.7 MB 0 B
frontend/dist/render-query.js 26.7 MB 0 B
frontend/dist/ReplayLens 21.7 kB 0 B
frontend/dist/ReplayLensesScene 12.1 kB 0 B
frontend/dist/requirementDiagram-4Y6WPE33 31.9 kB 0 B
frontend/dist/ResourceTransfer 9.42 kB 0 B
frontend/dist/restructuredtext 3.94 kB 0 B
frontend/dist/RevenueAnalyticsScene 25.8 kB -65 B (-0.25%)
frontend/dist/ruby 8.54 kB 0 B
frontend/dist/rust 4.2 kB 0 B
frontend/dist/sankeyDiagram-5OEKKPKP 24 kB 0 B
frontend/dist/SavedInsights 902 B 0 B
frontend/dist/sb 1.86 kB 0 B
frontend/dist/scala 7.36 kB 0 B
frontend/dist/schema 722 kB 0 B
frontend/dist/SchemaScene 21.2 kB 0 B
frontend/dist/scheme 1.8 kB 0 B
frontend/dist/scss 6.45 kB 0 B
frontend/dist/SdkDoctorScene 9.66 kB 0 B
frontend/dist/sequenceDiagram-3UESZ5HK 117 kB 0 B
frontend/dist/SessionAttributionExplorerScene 6.87 kB 0 B
frontend/dist/SessionGroupSummariesTable 4.87 kB 0 B
frontend/dist/SessionGroupSummaryScene 19.1 kB -24 B (-0.13%)
frontend/dist/SessionProfileScene 15.3 kB 0 B
frontend/dist/SessionRecordingDetail 2 kB 0 B
frontend/dist/SessionRecordingFilePlaybackScene 4.71 kB 0 B
frontend/dist/SessionRecordings 980 B 0 B
frontend/dist/SessionRecordingsKiosk 10.2 kB 0 B
frontend/dist/SessionRecordingsPlaylistScene 5.28 kB 0 B
frontend/dist/SessionRecordingsSettingsScene 2.14 kB 0 B
frontend/dist/SessionsScene 4.22 kB 0 B
frontend/dist/SettingsScene 3.33 kB 0 B
frontend/dist/sharedChunkAnchors 236 kB 0 B
frontend/dist/sharedChunkAnchors.js 236 kB 0 B
frontend/dist/SharedMetric 6.03 kB 0 B
frontend/dist/SharedMetrics 787 B 0 B
frontend/dist/shell 3.11 kB 0 B
frontend/dist/SignupContainer 28.4 kB 0 B
frontend/dist/Site 1.43 kB 0 B
frontend/dist/solidity 18.6 kB 0 B
frontend/dist/sophia 2.8 kB 0 B
frontend/dist/SourceScene 928 B 0 B
frontend/dist/SourcesScene 6.2 kB 0 B
frontend/dist/sparql 2.59 kB 0 B
frontend/dist/sql 10.3 kB 0 B
frontend/dist/SqlVariableEditScene 7.49 kB 0 B
frontend/dist/st 7.44 kB 0 B
frontend/dist/StartupProgram 21.4 kB 0 B
frontend/dist/stateDiagram-AJRCARHV 11.3 kB 0 B
frontend/dist/stateDiagram-v2-BHNVJYJU 1.18 kB 0 B
frontend/dist/StripeConfirmInstall 3.78 kB 0 B
frontend/dist/SubscriptionScene 14.4 kB 0 B
frontend/dist/SubscriptionsScene 5.42 kB 0 B
frontend/dist/SupportSettingsScene 1.64 kB 0 B
frontend/dist/SupportTicketScene 33.8 kB 0 B
frontend/dist/SupportTicketsScene 971 B +34 B (+3.63%)
frontend/dist/Survey 1.12 kB 0 B
frontend/dist/SurveyFormBuilder 1.78 kB 0 B
frontend/dist/Surveys 26.6 kB 0 B
frontend/dist/surveys.js 94.7 kB 0 B
frontend/dist/SurveyWizard 71.5 kB 0 B
frontend/dist/swift 5.3 kB 0 B
frontend/dist/SystemStatus 17.3 kB 0 B
frontend/dist/systemverilog 7.65 kB 0 B
frontend/dist/TaskDetailScene 23.3 kB 0 B
frontend/dist/TaskTracker 14.5 kB +38 B (+0.26%)
frontend/dist/tcl 3.61 kB 0 B
frontend/dist/TextCardMarkdownEditor 11.2 kB -28 B (-0.25%)
frontend/dist/timeline-definition-PNZ67QCA 31.3 kB 0 B
frontend/dist/toolbar 15 MB 0 B
frontend/dist/toolbar.js 15 MB 0 B
frontend/dist/ToolbarLaunch 2.71 kB 0 B
frontend/dist/tracing-headers.js 1.74 kB 0 B
frontend/dist/TracingScene 53.9 kB -39 B (-0.07%)
frontend/dist/TransformationsScene 2.16 kB 0 B
frontend/dist/treemap-LRROVOQU 357 B 0 B
frontend/dist/treeView-BLDUP644 360 B 0 B
frontend/dist/TrendsBarChart 6.88 kB 0 B
frontend/dist/TrendsLineChart 6.8 kB 0 B
frontend/dist/tsMode 24 kB 0 B
frontend/dist/twig 6.01 kB 0 B
frontend/dist/TwoFactorReset 4.27 kB 0 B
frontend/dist/typescript 274 B 0 B
frontend/dist/typespec 2.86 kB 0 B
frontend/dist/Unsubscribe 1.9 kB 0 B
frontend/dist/UserInterview 6.28 kB +35 B (+0.56%)
frontend/dist/UserInterviewResponse 5.54 kB -35 B (-0.63%)
frontend/dist/UserInterviews 4.08 kB +35 B (+0.87%)
frontend/dist/vb 5.83 kB 0 B
frontend/dist/vennDiagram-CIIHVFJN 41.6 kB 0 B
frontend/dist/VercelConnect 5.23 kB 0 B
frontend/dist/VercelLinkError 2.5 kB 0 B
frontend/dist/VerifyEmail 5.02 kB 0 B
frontend/dist/vimMode 211 kB 0 B
frontend/dist/VisualReviewIndexScene 2.41 kB -36 B (-1.47%)
frontend/dist/VisualReviewRunScene 44.4 kB 0 B
frontend/dist/VisualReviewRunsScene 7.21 kB 0 B
frontend/dist/VisualReviewSettingsScene 11 kB 0 B
frontend/dist/VisualReviewSnapshotHistoryScene 13.8 kB 0 B
frontend/dist/VisualReviewSnapshotOverviewScene 19.4 kB -38 B (-0.2%)
frontend/dist/wardley-L42UT6IY 352 B 0 B
frontend/dist/wardleyDiagram-YWT4CUSO 26.2 kB 0 B
frontend/dist/web-vitals-with-attribution.js 11.8 kB 0 B
frontend/dist/web-vitals.js 6.39 kB 0 B
frontend/dist/WebAnalyticsScene 9.79 kB 0 B
frontend/dist/WebGLRenderer-DYjOwNoG 60.4 kB 0 B
frontend/dist/WebGPURenderer-B_wkl_Ja 36.3 kB 0 B
frontend/dist/WebScriptsScene 2.78 kB 0 B
frontend/dist/WebVitals 7.38 kB 0 B
frontend/dist/WebVitalsPathBreakdown 3.89 kB +35 B (+0.91%)
frontend/dist/webworkerAll-puPV1rBA 397 B 0 B
frontend/dist/wgsl 7.38 kB 0 B
frontend/dist/Wizard 4.7 kB 0 B
frontend/dist/WorkflowsScene 60 kB 0 B
frontend/dist/WorldMap 1.04 MB 0 B
frontend/dist/xml 3.02 kB 0 B
frontend/dist/xychartDiagram-2RQKCTM6 39.6 kB 0 B
frontend/dist/yaml 4.64 kB 0 B

compressed-size-action

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 20, 2026

Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
products/legal_documents/frontend/scenes/legalDocumentsLogic.ts:149-153
Missing `legalDocumentsLoading` guard in retry listener. The `loadCurrentOrganizationSuccess` listener fires whenever the org is (re-)loaded. If `afterMount` already started a fetch that hasn't finished yet — or if `organizationLogic` refreshes the org while an admin with zero documents is on this scene — the listener will trigger a second concurrent `loadLegalDocuments()` call. Adding `!values.legalDocumentsLoading` prevents duplicate in-flight requests in the timing overlap, and keeps the intent clear: only retry when nothing is already loading.

```suggestion
        loadCurrentOrganizationSuccess: () => {
            if (values.legalDocuments.length === 0 && values.isAdminOrOwner && !values.legalDocumentsLoading) {
                actions.loadLegalDocuments()
            }
        },
```

Reviews (1): Last reviewed commit: "fix(legal-documents): suppress 403 for n..." | Re-trigger Greptile

Comment thread products/legal_documents/frontend/scenes/legalDocumentsLogic.ts
Add `!values.legalDocumentsLoading` to the `loadCurrentOrganizationSuccess`
listener so it doesn't fire a second `loadLegalDocuments()` call if
`afterMount` has a fetch already in flight, or if `organizationLogic`
refreshes the org while a request is pending.

Generated-By: PostHog Code
Task-Id: 8dbd1c51-9b88-45a3-8b6f-485560bd8307
@rafaeelaudibert rafaeelaudibert enabled auto-merge (squash) May 20, 2026 16:26
@rafaeelaudibert rafaeelaudibert merged commit 43d80eb into master May 20, 2026
163 checks passed
@rafaeelaudibert rafaeelaudibert deleted the posthog-code/fix-legal-documents-403-noise branch May 20, 2026 16:52
@deployment-status-posthog
Copy link
Copy Markdown

deployment-status-posthog Bot commented May 20, 2026

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-05-20 17:34 UTC Run
prod-us ✅ Deployed 2026-05-20 17:53 UTC Run
prod-eu ✅ Deployed 2026-05-20 17:52 UTC Run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant