Unique findings linked to captured evidence
Code audit review
Start with the highest-risk work, confirm the evidence, then verify each correction.
Pending candidates requiring prioritization
Root-cause tasks instead of repeated occurrences
Complete capabilities / partial capabilities
Start with critical and high items at the top.
Open the task and inspect the listed files before changing code.
Run tests, build, and a new audit before closing the item.
Top risks
Start here. Each row groups evidence that points to the same underlying problem.
- 01Configured webhook destination lacks complete SSRF controlsA webhook or destination delivery module sends a dynamic URL without mechanical evidence that private networks are rejected and automatic redirects are disabled. The value may come from stored configuration rather than the current request.
- 02Outbound destinations are server-owned or safely constrained1 request-derived outbound destination candidate(s) require review.
- 03Browser security policies are declared and observed1 header policy candidate(s) require review.
- 04Sensitive entry points validate caller-controlled input75 of 77 sensitive entry point(s) contain a recognized validation call within five explicit call hops.
- 05Abuse-sensitive routes apply rate limits0 of 11 mapped login, registration, recovery, invitation, verification, checkout, or billing boundary(s) contain a recognized rate-limit operation.
- 06Webhook side effects resist duplicate delivery0 of 1 mapped webhook/callback boundary(s) contain a recognized idempotency claim or event-recording operation.
Grouped fix queue
Choose a task to see the problem, affected files, next steps, and completion checks.
Investigate findings
Validate evidence, reachability, and source context before changing code.
Apply corrections
Upgrade dependencies, patch source, and add focused tests.
Verify controls
Close evidence gaps with deterministic or authorized runtime checks.
Prioritized work items
Open a task to understand what was found, where to look, what to do next, and how to verify the result.
Showing 20 of 25 tasks, ordered by urgency.
-
highNeeds investigationConfigured webhook destination lacks complete SSRF controls1 finding
What we found
A webhook or destination delivery module sends a dynamic URL without mechanical evidence that private networks are rejected and automatic redirects are disabled. The value may come from stored configuration rather than the current request.
Where to look
- apps/marketing/src/lib/analytics/webhook-destination.ts
What to do next
- Validate the candidate against its evidence and surrounding source before proposing a change.
- Do not suppress, lower severity, or broaden the patch automatically.
- Add or update a focused regression test when the behavior can be exercised safely.
Consider it resolved when
- A new CodebaseScan scan no longer reports the same issue.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationOutbound destinations are server-owned or safely constrained1 control
What we found
1 request-derived outbound destination candidate(s) require review.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Test untrusted public, private, loopback, metadata, DNS-rebinding, and redirect destinations against the effective egress policy.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationBrowser security policies are declared and observed1 control
What we found
1 header policy candidate(s) require review.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Observe representative production responses and verify CSP, frame, MIME, referrer, permissions, and transport policies.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationSensitive entry points validate caller-controlled input1 control
What we found
75 of 77 sensitive entry point(s) contain a recognized validation call within five explicit call hops.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Test malformed, oversized, unexpected-type, and boundary input before the sensitive operation.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationAbuse-sensitive routes apply rate limits1 control
What we found
0 of 11 mapped login, registration, recovery, invitation, verification, checkout, or billing boundary(s) contain a recognized rate-limit operation.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Burst requests by IP and account identifier, then confirm bounded retries, useful backoff, and no easy key rotation bypass.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationWebhook side effects resist duplicate delivery1 control
What we found
0 of 1 mapped webhook/callback boundary(s) contain a recognized idempotency claim or event-recording operation.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Replay the same provider event concurrently and after a failure; confirm one durable effect and safe retry recovery.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationTenant-aware data operations enforce a server-side scope1 control
What we found
57 of 77 mapped database boundary(s) in a tenant-aware project contain a recognized tenant scope or explicit authorization decision.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Exercise every operation as two tenants, including list, lookup, update, delete, export, background job, and administrative paths; inspect effective RLS separately.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationClient navigation, storage, and messaging use constrained browser boundaries1 control
What we found
1 client navigation, storage, messaging, or new-tab candidate(s) require review.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Exercise untrusted URLs, message origins, storage access after script injection, and external new-tab navigation.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationCookie-authenticated mutations validate request origin or CSRF token1 control
What we found
0 of 9 mapped cookie-using sensitive mutation boundary(s) contain a recognized CSRF or origin validation operation.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Send cross-site form, fetch, null-Origin, and sibling-subdomain requests; confirm rejection before the sensitive effect.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationSensitive mutations authenticate a principal1 control
What we found
44 of 45 mapped sensitive mutation boundary(s) contain a recognized authentication or authorization fact in applicable middleware or within five explicit call hops.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Test each boundary without a session/token and confirm rejection before the sensitive operation.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationBilling mutations derive charged values on the server1 control
What we found
2 billing mutation boundary(s) were mapped; 0 were directly inspected for request-derived price, product, plan, or amount fields.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Tamper with plan, price, product, amount, currency, quantity, discount, and tenant ownership; compare the provider-side charge with the server catalog.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationRecovery and invitation tokens have a bounded lifecycle1 control
What we found
1 recovery, invitation, or verification boundary(s) were mapped without a decisive token-generation/storage candidate; atomic one-time use remains unverified.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Test expiry, replay, concurrent redemption, account binding, user enumeration, token disclosure, and invalidation after password or email changes.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds investigationSensitive-shaped value is placed in a URL parameter1 finding
What we found
A URL or search-parameter key names credential or personal data. URLs can reach histories, logs, referrers, and monitoring systems.
Where to look
- apps/analytics/src/lib/handoff.ts
What to do next
- Validate the candidate against its evidence and surrounding source before proposing a change.
- Do not suppress, lower severity, or broaden the patch automatically.
- Add or update a focused regression test when the behavior can be exercised safely.
Consider it resolved when
- A new CodebaseScan scan no longer reports the same issue.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationFilesystem paths remain inside server-owned roots1 control
What we found
1 filesystem boundary(s) were mapped without enough evidence to prove containment.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Test decoded parent traversal, absolute paths, separators, symlinks, and race conditions against the canonical storage root.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationCross-origin access is intentionally constrained1 control
What we found
No effective cross-origin policy was observed; same-origin-only operation is possible but unverified.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Test trusted and untrusted Origin values, credential mode, preflight behavior, and server-side authorization independently.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationSensitive operations emit security-relevant audit events1 control
What we found
0 of 77 mapped sensitive boundary(s) contain a recognized audit/security logging call.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Confirm event content, actor, target, outcome, correlation ID, retention, access controls, and alerting in the real logging system.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationResolved dependencies are checked against OSV1 control
What we found
1086 resolved dependency record(s) were available; 0 OSV finding(s) are attached.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Review advisory freshness, runtime reachability, exploit preconditions, and supported upgrade paths.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationApproved HTTP response posture is observed1 control
What we found
No target URL was explicitly approved for runtime observation.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Probe representative production routes and deployment layers under explicit authorization.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationFile uploads enforce size, content, and storage-path constraints1 control
What we found
No decisive upload gap was mapped, but the profiler cannot prove that uploads are absent or fully constrained.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Test byte limits, file count, MIME/content mismatch, polyglots, generated names, traversal, overwrite, and storage execution policy.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
-
mediumNeeds verificationRedirect destinations are constrained1 control
What we found
93 redirect boundary(s) were mapped without enough evidence to establish the effective destination policy.
Where to look
This check spans an application flow; no single file was identified yet.
What to do next
- Test external, scheme-relative, encoded, mixed-case, and userinfo-form destinations against the effective redirect policy.
- Preserve missing runtime evidence as unknown.
Consider it resolved when
- The expected control has direct evidence.
- The relevant project tests pass.
- The production build passes.
- A fresh CodebaseScan audit completes after the change.
The complete queue remains available in Agent data.
Coverage
Complete, partial, skipped, and unsupported checks remain distinct. Missing coverage never becomes a clean result.
-
COMPLETE
Project structure profile
Parsed 739 captured TypeScript/JavaScript file(s) as data; mapped 124 entry point(s), 5711 symbol(s), 9590 resolved call edge(s), 1659 security-relevant fact(s), 15 declared component(s), 16 cross-component import edge(s), 21 declarative TypeScript path alias(es), 11 captured workspace package entry point(s), and 0 declarative SaaS semantics file(s).
-
COMPLETE
Framework-aware authorization
Evaluated 124 mapped entry point(s), request-data flows, SQL/NoSQL, process, filesystem, outbound, deserialization, regex, object-write, upload, cookie, and client/server boundaries. Cross-file authorization and selected taint flows follow explicit call relationships up to five hops and include applicable Next.js middleware. Missing runtime, RLS, and external policy evidence remains unverified.
-
COMPLETE
SaaS application security
Nine bounded TypeScript/JavaScript rules review client-controlled billing, ownership or privilege assignment, token lifecycle, internal error exposure, sensitive logging and URLs, and OAuth redirect trust. Findings are source candidates, not runtime proof.
-
COMPLETE
Next.js application security
Evaluated 124 mapped entry point(s) for authenticated reads, object scope, input validation, user-specific caching, public environment exposure, and sensitive response fields.
-
COMPLETE
React client security
Analyzed 262 runtime JSX/TSX file(s), including 130 explicit Client Component module(s), for rendering, navigation, browser storage, messaging, new-tab, and server/client boundary risks.
-
COMPLETE
Static accessibility
Inspected 262 JSX file(s) for six bounded semantic candidates; 0 parse failure(s). Runtime focus, contrast, layout, and assistive-technology behavior require imported external evidence.
-
NOT PERFORMED
Imported Axe runtime accessibility
No root codebasescan.axe.json, axe-results.json, or axe-report.json artifact was captured. CodebaseScan did not execute the target application or a browser.
-
COMPLETE
Web discovery and SEO posture
Checked 3 web app root(s) for robots policy, sitemap, Next.js metadata, and optional llms.txt presence. robots=2; sitemap=2; llms.txt=0. Deployment behavior was not inferred from source.
-
COMPLETE
Static privacy
Inspected 743 source file(s) for bounded URL, logging, and browser-storage privacy candidates; 0 parse failure(s). Data purpose, retention, consent, and runtime transfers remain unverified.
-
COMPLETE
Static reliability
Inspected 743 source file(s) for bounded request-timeout and swallowed-error candidates; 0 parse failure(s). Platform timeouts, queues, retries, and runtime recovery remain unverified.
-
COMPLETE
Node.js supply-chain integrity
Inspected 15 manifest(s), 1 lockfile(s), 133 dependency specifier(s), and 1086 resolved lock entry(s) without installing packages.
-
PARTIAL
JavaScript/TypeScript dependency structure
739 modules and 295 local dependencies were mapped; 1 cycle(s) found (1 retained), 49 orphan candidate(s) found (49 retained), and 188 coupling hotspot(s) found (100 retained). These are mechanical review data, not vulnerabilities. Target configuration was not loaded. dependency-cruiser 18.2.0 is covered by the CodebaseScan scanner compatibility fixtures.
-
COMPLETE
JavaScript/TypeScript code duplication
54 clone(s), 1070 duplicated line(s), and 2.6987% duplication were measured. Source fragments were discarded. Duplicates are maintainability evidence, not vulnerabilities. jscpd 5.2.0 is covered by the CodebaseScan scanner compatibility fixtures.
-
PARTIAL
Code quality metrics
6068 function(s) measured; 259 complexity, size, or parameter hotspot(s) found (200 retained). 0 existing coverage artifact(s) imported. Metrics are review evidence, not vulnerabilities.
-
COMPLETE
Dead code and dependency usage
55 unused file candidate(s) found (55 retained), 6 source-unreferenced runtime dependency candidate(s) found (6 retained), and 226 unused export/type candidate(s) found (226 retained). All target plugins and executable configuration loaders were disabled. knip 6.35.1 is covered by the CodebaseScan scanner compatibility fixtures.
-
COMPLETE
Built-in static patterns
Seven bounded regex heuristics. Not a complete SAST engine or interprocedural analysis.
-
DISABLED
Static code analysis
Disabled. Install the binary and opt in through local configuration.
-
DISABLED
Secret scanning
Disabled. Install the binary and opt in through local configuration.
-
DISABLED
Dependency vulnerabilities
The local advisory database has no records for 1000 resolved package(s). No network request was made and no clean result is implied.
-
COMPLETE
Security configuration
Conservative checks for security headers, session cookies, CORS, route and server-action authorization, and environment configuration in TypeScript/Node.js/Next.js projects.
-
NOT RUN
HTTP runtime posture
Not run. No HTTP target was explicitly approved for this audit.
-
NOT SUPPORTED
Infrastructure as Code
No dedicated Terraform, CloudFormation, or equivalent policy scanner is implemented.
-
NOT SUPPORTED
Cloud IAM
Cloud account and effective IAM policy analysis are outside this release.
-
NOT PERFORMED
Dynamic exploitation
CodebaseScan does not exploit targets, brute-force authentication, or crawl applications.
Technical data
Secondary evidence stays collapsed until a reviewer needs it.
Open only the evidence needed for the current decision.
Policy, modes, and review state
Selected review lenses
Enabled modes decide which mechanical checks contribute evidence. Disabled modes are explicit gaps, not passing results.
Source model and correlated evidence
Project structure
739 source files and 513143 AST nodes were parsed as data. Target code was not executed.
Frameworks: Next.js App Router 16 [supported], React 19 [supported], Drizzle ORM ^0.45.2 [unverified], Zod 4 [unverified].
Declared package boundaries
- Example SaaS Application (.): 52 source file(s).
- @sample/analytics (apps/analytics): 74 source file(s).
- @example/docs (apps/docs): 28 source file(s).
- @example/marketing (apps/marketing): 469 source file(s).
- @example/ai (packages/ai): 2 source file(s).
- @sample/analytics-core (packages/analytics-core): 24 source file(s).
- @example/analytics (packages/analytics): 3 source file(s).
- @example/auth (packages/auth): 16 source file(s).
- @example/billing (packages/billing): 5 source file(s).
- @sample/booking-core (packages/booking-core): 20 source file(s).
- @example/notification (packages/notification): 6 source file(s).
- @example/observability (packages/observability): 1 source file(s).
- @sample/referrals-core (packages/referrals-core): 19 source file(s).
- @example/saas (packages/saas): 17 source file(s).
- @example/storage (packages/storage): 3 source file(s).
Cross-component imports
- @example/marketing → @example/saas: 136 import(s).
- @example/marketing → @example/auth: 53 import(s).
- @sample/analytics → @sample/analytics-core: 43 import(s).
- @example/marketing → @example/observability: 22 import(s).
- @example/marketing → @example/analytics: 17 import(s).
- @example/marketing → @example/billing: 10 import(s).
- @example/marketing → @example/notification: 9 import(s).
- @example/auth → @example/notification: 6 import(s).
- @example/marketing → @example/ai: 4 import(s).
- @example/saas → @example/notification: 2 import(s).
- @example/marketing → @example/storage: 2 import(s).
- @example/auth → @example/observability: 2 import(s).
- @example/notification → @example/observability: 1 import(s).
- @sample/analytics → @example/auth: 1 import(s).
- @example/ai → @example/observability: 1 import(s).
- @example/auth → @example/saas: 1 import(s).
Security-critical test evidence
Captured test imports are traced to source entry points and sensitive operations without executing tests.
Critical files without a related captured test import
- apps/analytics/src/app/api/account/billing/route.ts
- apps/analytics/src/app/api/account/members/route.ts
- apps/analytics/src/app/api/account/route.ts
- apps/analytics/src/app/api/activation/route.ts
- apps/analytics/src/app/api/connections/route.ts
- apps/analytics/src/app/api/export/route.ts
- apps/analytics/src/app/api/history/route.ts
- apps/analytics/src/app/api/onboarding/route.ts
- apps/analytics/src/app/api/operations/route.ts
- apps/analytics/src/app/api/overview/route.ts
- apps/analytics/src/app/api/preview/route.ts
- apps/analytics/src/app/api/properties/route.ts
- apps/analytics/src/app/api/sync/route.ts
- apps/docs/src/app/api/search/route.ts
- apps/docs/src/proxy.ts
- apps/marketing/src/app/admin/waitlist/export/route.ts
- apps/marketing/src/app/api/analytics/business/churn/route.ts
- apps/marketing/src/app/api/analytics/business/revenue-series/route.ts
- apps/marketing/src/app/api/analytics/business/subscriptions/route.ts
- apps/marketing/src/app/api/analytics/destinations/route.ts
- apps/marketing/src/app/api/analytics/limits/route.ts
- apps/marketing/src/app/api/analytics/overview/route.ts
- apps/marketing/src/app/api/analytics/traffic/countries/route.ts
- apps/marketing/src/app/api/analytics/traffic/devices/route.ts
- apps/marketing/src/app/api/analytics/traffic/referrers/route.ts
- apps/marketing/src/app/api/analytics/traffic/top-pages/route.ts
- apps/marketing/src/app/api/analytics/usage/route.ts
- apps/marketing/src/app/api/billing/webhook/route.ts
- apps/marketing/src/app/api/health/route.ts
- apps/marketing/src/app/api/inngest/route.ts
- apps/marketing/src/app/api/support/route.ts
- apps/marketing/src/app/api/v1/analytics/usage/route.ts
- apps/marketing/src/app/app/billing/actions.ts
- apps/marketing/src/app/app/notifications/actions.ts
- apps/marketing/src/lib/mdx.tsx
- apps/marketing/src/proxy.ts
- scripts/dev-marketing.mjs
- scripts/docker-app-start.mjs
- scripts/docker-compose.mjs
- scripts/run-marketing-next.mjs
- scripts/run-playwright-web-server.mjs
- scripts/setup-local.mjs
- scripts/setup-verify.mjs
- scripts/sync-working-copy.mjs
Test evidence limitations
- A related import is source-reference evidence only; it does not prove that a test asserts the security-relevant behavior.
- Tests are not executed, and coverage artifacts are not attributed to individual source files by this analysis.
- Import traversal is bounded to 5 resolved captured hops and can miss dynamic loading or unsupported aliases.
- Black-box and end-to-end tests that reach routes only by URL cannot be attributed to source targets mechanically.
- Not observed means no related captured test import was found, not that the code is untested.
Observed signals and declared context
Observed entries come from static source facts. Declared data and boundaries come from project configuration and are not proof of runtime behavior.
Observed operations
- sensitive-read: 298
- response: 187
- outbound-transfer: 26
- url-or-redirect: 136
- cookie: 7
- browser-storage: 6
- persistent-storage: 45
- financial-operation: 2
Contracts and control evidence
Environment configuration
Named source accesses are compared with sanitized environment templates. Values and free-form comments are discarded; uncommented and commented NAME= declarations are retained.
Sanitized templates
- .env.example: 131 names
- apps/marketing/.env.example: 29 names
Undocumented named uses
- ANALYTICS_CRON_SECRET — apps/marketing/src/lib/cron-auth.ts:8
- APP_PACKAGE — scripts/docker-app-start.mjs:4
- APP_PORT — scripts/docker-app-start.mjs:5
- APP_RUN_DB_MIGRATE — scripts/docker-app-start.mjs:7
- APP_RUN_DB_PUSH — scripts/docker-app-start.mjs:8
- APP_TEMPLATE_SLUG — scripts/docker-app-start.mjs:3
- AUTH_BASE_URL — apps/analytics/src/lib/handoff.ts:254
- AUTH_DISABLE_RATE_LIMIT — packages/auth/src/index.ts:732
- AUTH_SECRET — apps/analytics/src/lib/handoff.ts:247
- AUTH_TRUSTED_ORIGINS — packages/auth/src/index.ts:325
- BETTER_AUTH_TRUSTED_ORIGINS — packages/auth/src/index.ts:326
- DEPLOY_TARGET — scripts/deploy-check.mjs:7
- sample_ANALYTICS_ACCOUNT_LINK_STORE_MODE — apps/analytics/src/lib/account-link-store.ts:102
- sample_ANALYTICS_ACCOUNT_LINK_STORE_PATH — apps/analytics/src/lib/account-link-store.ts:117
- sample_ANALYTICS_ACCOUNT_LINK_TABLE — apps/analytics/src/lib/account-link-store.ts:128
- sample_ANALYTICS_APP_URL — apps/marketing/src/lib/platform-auth/analytics-handoff.ts:117
- sample_ANALYTICS_BILLING_PLAN_CURRENCY — apps/analytics/src/lib/commercial.ts:217
- sample_ANALYTICS_BILLING_PLAN_ID — apps/analytics/src/lib/commercial.ts:207
- sample_ANALYTICS_BILLING_PLAN_LABEL — apps/analytics/src/lib/commercial.ts:210
- sample_ANALYTICS_BILLING_PLAN_PRICE_LABEL — apps/analytics/src/lib/commercial.ts:213
- sample_ANALYTICS_CONNECTION_ENCRYPTION_KEY — apps/analytics/src/lib/connection-crypto.ts:16
- sample_ANALYTICS_CONNECTION_STORE_MODE — apps/analytics/src/lib/connections-store.ts:135
- sample_ANALYTICS_CONNECTION_STORE_PATH — apps/analytics/src/lib/connections-store.ts:150
- sample_ANALYTICS_CONNECTION_TABLE — apps/analytics/src/lib/connections-store.ts:161
- sample_ANALYTICS_DATA_HANDLING_URL — apps/analytics/src/lib/onboarding.ts:109
- sample_ANALYTICS_ENCRYPTION_KEY — apps/analytics/src/lib/connection-crypto.ts:17
- sample_ANALYTICS_MAX_ACTIVE_CONNECTIONS — apps/analytics/src/lib/operations.ts:270
- sample_ANALYTICS_MAX_MEMBERS — apps/analytics/src/lib/membership.ts:74
- sample_ANALYTICS_MAX_PROPERTIES — apps/analytics/src/lib/properties.ts:111
- sample_ANALYTICS_MEMBERSHIP_STORE_MODE — apps/analytics/src/lib/membership-store.ts:81
- sample_ANALYTICS_MEMBERSHIP_STORE_PATH — apps/analytics/src/lib/membership-store.ts:96
- sample_ANALYTICS_MEMBERSHIP_TABLE — apps/analytics/src/lib/membership-store.ts:103
- sample_ANALYTICS_OFFBOARDING_EXPORTS_DURING_GRACE — apps/analytics/src/lib/launch-policy.ts:77
- sample_ANALYTICS_OFFBOARDING_GRACE_DAYS — apps/analytics/src/lib/launch-policy.ts:64
- sample_ANALYTICS_OFFBOARDING_RETENTION_DAYS — apps/analytics/src/lib/launch-policy.ts:70
- sample_ANALYTICS_PLATFORM_AUTH_AUDIENCE — apps/analytics/src/lib/handoff.ts:261
- sample_ANALYTICS_PRIVACY_URL — apps/analytics/src/lib/onboarding.ts:106
- sample_ANALYTICS_PROPERTY_STORE_MODE — apps/analytics/src/lib/property-store.ts:43
- sample_ANALYTICS_PROPERTY_STORE_PATH — apps/analytics/src/lib/property-store.ts:58
- sample_ANALYTICS_PROPERTY_TABLE — apps/analytics/src/lib/property-store.ts:65
- sample_ANALYTICS_SUPPORT_EMAIL — apps/analytics/src/lib/onboarding.ts:104
- sample_ANALYTICS_SYNC_STORE_MODE — apps/analytics/src/lib/sync-store.ts:61
- sample_ANALYTICS_SYNC_STORE_PATH — apps/analytics/src/lib/sync-store.ts:76
- sample_ANALYTICS_SYNC_TABLE — apps/analytics/src/lib/sync-store.ts:83
- sample_ANALYTICS_TERMS_URL — apps/analytics/src/lib/onboarding.ts:107
- sample_PLATFORM_AUTH_ISSUER — apps/analytics/src/lib/handoff.ts:253
- sample_PLATFORM_AUTH_RETURN_ORIGINS — apps/analytics/src/lib/handoff.ts:269
- sample_PLATFORM_AUTH_SECRET — apps/analytics/src/lib/handoff.ts:245
- sample_PLATFORM_AUTH_TTL_SECONDS — apps/marketing/src/lib/platform-auth/analytics-handoff.ts:110
- HEALTHCHECK_URL — scripts/deploy-check.mjs:333
Declared but not observed
- ANALYTICS_WEBHOOK_AUTO_REFRESH_STALE_HOURS
- ANALYTICS_WEBHOOK_MAX_ATTEMPTS
- ANALYTICS_WEBHOOK_REDELIVERY_MAX_ATTEMPTS
- ANALYTICS_WEBHOOK_REDELIVERY_MIN_AGE_MS
- ANALYTICS_WEBHOOK_RETRY_BASE_MS
- ANALYTICS_WEBHOOK_TIMEOUT_MS
- AUTH_MAGIC_LINK_ENABLED
- AUTH_MAGIC_LINK_EXPIRES_IN
- AUTH_TWO_FACTOR_ENABLED
- AUTH_TWO_FACTOR_ISSUER
- BILLING_PER_SEAT_EXPERIMENT_PLANS
- BILLING_PROVIDER
- BILLING_SUBSCRIPTION_EXPERIMENT_INTERVAL
- BILLING_SUBSCRIPTION_EXPERIMENT_PLANS
- BILLING_USAGE_BASED_EXPERIMENT_PLANS
- example_LAUNCH_UPSTREAM_ORIGIN_URL
- example_SCALE_UPSTREAM_ORIGIN_URL
- STORAGE_SIGNED_URL_TTL_SECONDS
- STRIPE_CREDITS_GROWTH_PRICE_ID
- STRIPE_CREDITS_SCALE_PRICE_ID
- STRIPE_CREDITS_STARTER_PRICE_ID
- STRIPE_PRO_PER_SEAT_PRICE_ID
- STRIPE_PRO_PER_SEAT_PRICE_ID_EUR
- STRIPE_PRO_PER_SEAT_PRICE_ID_USD
- STRIPE_PRO_PRICE_ID
- STRIPE_PRO_PRICE_ID_EUR
- STRIPE_PRO_PRICE_ID_USD
- STRIPE_PRO_SUBSCRIPTION_PRICE_ID
- STRIPE_PRO_SUBSCRIPTION_PRICE_ID_EUR
- STRIPE_PRO_SUBSCRIPTION_PRICE_ID_USD
- STRIPE_PRO_USAGE_PRICE_ID
- STRIPE_PRO_USAGE_PRICE_ID_EUR
- STRIPE_PRO_USAGE_PRICE_ID_USD
- STRIPE_SCALE_PER_SEAT_PRICE_ID
- STRIPE_SCALE_PER_SEAT_PRICE_ID_EUR
- STRIPE_SCALE_PER_SEAT_PRICE_ID_USD
- STRIPE_SCALE_PRICE_ID
- STRIPE_SCALE_PRICE_ID_EUR
- STRIPE_SCALE_PRICE_ID_USD
- STRIPE_SCALE_SUBSCRIPTION_PRICE_ID
- STRIPE_SCALE_SUBSCRIPTION_PRICE_ID_EUR
- STRIPE_SCALE_SUBSCRIPTION_PRICE_ID_USD
- STRIPE_SCALE_USAGE_PRICE_ID
- STRIPE_SCALE_USAGE_PRICE_ID_EUR
- STRIPE_SCALE_USAGE_PRICE_ID_USD
- STRIPE_STARTER_PRICE_ID
- STRIPE_STARTER_PRICE_ID_EUR
- STRIPE_STARTER_PRICE_ID_USD
Dynamic accesses
- process.env — apps/marketing/src/lib/billing-credits-catalog.ts:139
- process.env — packages/billing/src/catalog.ts:126
- process.env — packages/billing/src/catalog.ts:132
- process.env — packages/billing/src/catalog.ts:138
- process.env — packages/billing/src/catalog.ts:168
- process.env — packages/billing/src/index.ts:612
- process.env — packages/billing/src/index.ts:652
- process.env — packages/billing/src/index.ts:1529
- process.env — packages/billing/src/index.ts:1533
Contract limitations
- Only named process.env, import.meta.env, and direct destructuring accesses in captured JavaScript or TypeScript are compared.
- Template values are discarded before the snapshot; this analysis retains names only. Commented NAME= placeholders count as documented optional declarations.
- A name missing from captured templates may still be intentionally supplied by deployment infrastructure.
- Unused declarations may be consumed by frameworks, package scripts, external services, or files outside the bounded snapshot.
- Only security-, authentication-, credential-, data-service-, or payment-shaped undocumented names with at least one required-looking read become findings. Writes, comparisons, and recognized fallback/default reads remain visible in the contract without creating a candidate.
OpenAPI and source consistency
Captured declarations are compared with statically mapped Next.js and Express route operations.
68 unmatched source operation(s) were outside the inferred contract path scope and are not counted as differences.
API contract limitations
- OpenAPI and Swagger files are parsed as inert JSON or YAML; external references and executable generators are not loaded.
- Path parameters are compared structurally across OpenAPI, Next.js, and Express syntax.
- Unmatched source operations become candidates only inside the common static path scope inferred from each captured specification.
- A declared-only or source-only operation is a documentation consistency candidate, not proof that an endpoint is missing or exposed.
- Server base paths, rewrites, mounted routers, generated specifications, and runtime registration can prevent a static match.
- Routes with no statically observed HTTP method remain unverified and are not counted as source-only operations.
Schema, migration, and source consistency
Captured declarations and SQL migration references are compared with statically mapped database call chains.
Database contract limitations
- Schema, migration, and source files are parsed as inert text or syntax trees; no ORM, migration, or target code is executed.
- A gap is a consistency candidate, not proof that a database object is missing or stale at runtime.
- Squashed, externally managed, generated, renamed, or excluded migrations can make declaration-to-migration evidence incomplete.
- Source entity correlation is limited to statically mapped database call chains and can miss aliases, raw SQL, repositories, and dynamic access.
- Names are compared case-insensitively after punctuation removal; semantic renames cannot be inferred.
Endpoint controls and event vocabulary
Bounded call relationships connect each endpoint to captured signature, idempotency, and literal event-name evidence.
Mapped webhook endpoints
- POST /api/billing/webhook: verification evidenced; idempotency unverified
Unpaired event names remain external provider/customer boundaries, not mismatch findings.
Webhook contract limitations
- Target TypeScript and JavaScript are parsed as inert syntax; modules, configuration, and handlers are never imported or executed.
- Endpoints are limited to statically mapped HTTP routes whose names contain webhook/hook, or callback routes linked to captured signature-verification evidence.
- Call reachability follows statically resolved project-profile call edges to a bounded depth; dynamic dispatch and generated code remain unverified.
- Event names come only from literal discriminant branches, literal returned contracts, and literal payloads passed to recognized dispatch-like calls.
- Consumer-only and producer-only names are labeled external boundaries, not defects, because the other side may live at a provider or customer endpoint.
- Verification and idempotency statuses report captured evidence only; unverified does not prove the runtime control is absent.
Declarations, usages, and defaults
Literal declarations and evaluation keys are correlated without loading target configuration or provider SDKs.
4 dynamic usage(s) remain visible but unpaired.
Feature flag limitations
- JSON and TypeScript are parsed as inert data or syntax; target modules, configuration, providers, and flag SDKs are never loaded or executed.
- Declarations are limited to JSON featureFlags maps and literal TypeScript definition collections with feature/flag-shaped names.
- Usages are limited to literal keys passed to recognized flag-evaluation calls; dynamic keys remain visible but unpaired.
- Different declaration defaults across files may represent plans, environments, or variants and are not treated as conflicts.
- A default conflict requires inconsistent literal source defaults, or one unambiguous declared default that differs from one literal source default.
- Declaration-only and usage-only records are consistency candidates, not proof that a feature is dead, unreachable, or incorrectly configured at runtime.
Security checklist
Sensitive mutations authenticate a principal
44 of 45 mapped sensitive mutation boundary(s) contain a recognized authentication or authorization fact in applicable middleware or within five explicit call hops.
Verify: Test each boundary without a session/token and confirm rejection before the sensitive operation.
Sensitive read routes receive an authentication review
No missing-authentication candidate was found across 31 mapped sensitive read route(s).
Verify: Test anonymous and wrong-tenant reads. Confirm intentionally public routes expose only approved fields.
Administrative mutations enforce permission
10 of 10 privileged-looking mutation boundary(s) contain a recognized permission decision.
Verify: Test an authenticated non-admin principal against every privileged action.
Dynamic resource access is tenant or owner scoped
2 of 2 dynamic database boundary(s) contain a recognized tenant, owner, account, organization, or user scope in the captured call arguments.
Verify: Run cross-tenant and wrong-owner identifier tests and inspect effective RLS/database policy.
Sensitive entry points validate caller-controlled input
75 of 77 sensitive entry point(s) contain a recognized validation call within five explicit call hops.
Verify: Test malformed, oversized, unexpected-type, and boundary input before the sensitive operation.
Raw SQL keeps request data out of query structure
No supported raw SQL boundary was mapped.
Verify: Trace each query fragment, replace structural interpolation with parameters, and test metacharacter payloads without modifying production data.
Process execution keeps request data out of commands and executable selection
No supported process execution boundary was mapped.
Verify: Use fixed executables and argument arrays without a shell, then test separators, option injection, encoding, and unexpected executable names.
Filesystem paths remain inside server-owned roots
1 filesystem boundary(s) were mapped without enough evidence to prove containment.
Verify: Test decoded parent traversal, absolute paths, separators, symlinks, and race conditions against the canonical storage root.
Outbound destinations are server-owned or safely constrained
1 request-derived outbound destination candidate(s) require review.
Verify: Test untrusted public, private, loopback, metadata, DNS-rebinding, and redirect destinations against the effective egress policy.
Redirect destinations are constrained
93 redirect boundary(s) were mapped without enough evidence to establish the effective destination policy.
Verify: Test external, scheme-relative, encoded, mixed-case, and userinfo-form destinations against the effective redirect policy.
File uploads enforce size, content, and storage-path constraints
No decisive upload gap was mapped, but the profiler cannot prove that uploads are absent or fully constrained.
Verify: Test byte limits, file count, MIME/content mismatch, polyglots, generated names, traversal, overwrite, and storage execution policy.
Webhook authenticity is verified before processing
1 of 1 mapped webhook/callback boundary(s) contain a recognized signature or HMAC verification call.
Verify: Send missing, invalid, replayed, and stale signatures and confirm rejection before parsing or persistence.
Webhook side effects resist duplicate delivery
0 of 1 mapped webhook/callback boundary(s) contain a recognized idempotency claim or event-recording operation.
Verify: Replay the same provider event concurrently and after a failure; confirm one durable effect and safe retry recovery.
Abuse-sensitive routes apply rate limits
0 of 11 mapped login, registration, recovery, invitation, verification, checkout, or billing boundary(s) contain a recognized rate-limit operation.
Verify: Burst requests by IP and account identifier, then confirm bounded retries, useful backoff, and no easy key rotation bypass.
Billing mutations derive charged values on the server
2 billing mutation boundary(s) were mapped; 0 were directly inspected for request-derived price, product, plan, or amount fields.
Verify: Tamper with plan, price, product, amount, currency, quantity, discount, and tenant ownership; compare the provider-side charge with the server catalog.
Recovery and invitation tokens have a bounded lifecycle
1 recovery, invitation, or verification boundary(s) were mapped without a decisive token-generation/storage candidate; atomic one-time use remains unverified.
Verify: Test expiry, replay, concurrent redemption, account binding, user enumeration, token disclosure, and invalidation after password or email changes.
OAuth/OIDC flows bind redirects and authorization responses
No supported OAuth/OIDC boundary was mapped.
Verify: Test missing/reused state, PKCE mismatch, nonce mismatch, redirect variants, login CSRF, account-link confusion, and authorization-code replay.
Tenant-aware data operations enforce a server-side scope
57 of 77 mapped database boundary(s) in a tenant-aware project contain a recognized tenant scope or explicit authorization decision.
Verify: Exercise every operation as two tenants, including list, lookup, update, delete, export, background job, and administrative paths; inspect effective RLS separately.
Cookie-authenticated mutations validate request origin or CSRF token
0 of 9 mapped cookie-using sensitive mutation boundary(s) contain a recognized CSRF or origin validation operation.
Verify: Send cross-site form, fetch, null-Origin, and sibling-subdomain requests; confirm rejection before the sensitive effect.
Browser security policies are declared and observed
1 header policy candidate(s) require review.
Verify: Observe representative production responses and verify CSP, frame, MIME, referrer, permissions, and transport policies.
Sensitive cookies use explicit protection attributes
511 cookie operation(s) were mapped without a related deterministic candidate.
Verify: Inspect effective Set-Cookie attributes and test production HTTPS, expiry, logout, fixation, and CSRF behavior.
Cross-origin access is intentionally constrained
No effective cross-origin policy was observed; same-origin-only operation is possible but unverified.
Verify: Test trusted and untrusted Origin values, credential mode, preflight behavior, and server-side authorization independently.
Captured current source has no detected secret exposure candidate
The result reflects only enabled scanners over the bounded current-source snapshot.
Verify: Review Git history, CI variables, deployment secrets, rotation, and provider-side secret scanning separately.
Resolved dependencies are checked against OSV
1086 resolved dependency record(s) were available; 0 OSV finding(s) are attached.
Verify: Review advisory freshness, runtime reachability, exploit preconditions, and supported upgrade paths.
Approved HTTP response posture is observed
No target URL was explicitly approved for runtime observation.
Verify: Probe representative production routes and deployment layers under explicit authorization.
Sensitive operations emit security-relevant audit events
0 of 77 mapped sensitive boundary(s) contain a recognized audit/security logging call.
Verify: Confirm event content, actor, target, outcome, correlation ID, retention, access controls, and alerting in the real logging system.
Sensitive boundaries define explicit failure handling
77 of 77 mapped sensitive boundary(s) contain an explicit catch clause within five call hops.
Verify: Exercise dependency, validation, authorization, and storage failures; confirm safe responses and useful internal diagnostics.
Next.js caching keeps user and tenant data isolated
No supported user-specific cache isolation candidate was found in the bounded Next.js scan.
Verify: Test two users or tenants against warm cache entries and inspect Cache-Control behavior at the deployed edge.
Next.js client boundaries exclude privileged configuration and response data
No supported privileged public environment or sensitive server response field candidate was found.
Verify: Inspect production client bundles, RSC payloads, and API responses for privileged values.
Dynamic HTML preserves React output encoding
No unsanitized dynamic dangerouslySetInnerHTML candidate was found in the bounded React scan.
Verify: Test script, event-handler, URL, SVG, malformed markup, and mutation-XSS payloads at every intentional HTML rendering boundary.
Client navigation, storage, and messaging use constrained browser boundaries
1 client navigation, storage, messaging, or new-tab candidate(s) require review.
Verify: Exercise untrusted URLs, message origins, storage access after script injection, and external new-tab navigation.
Server and Client Component boundaries keep privileged data on the server
No supported server-only import, sensitive prop, async Client Component, or private environment boundary candidate was found.
Verify: Inspect serialized RSC payloads and production client bundles for credentials, privileged session objects, and server-only modules.
Mechanical analysis and rule quality
Likely root causes
Repeated findings are grouped by rule and location so reviewers can judge one underlying problem before opening every occurrence.
-
high
cause-e5a21decb425af8d1 TW-AST005 candidate in apps/marketing/src/lib/analytics/webhook-destination.ts.
1 finding · 1 task · priority 62 -
medium
cause-19cf08731afcffbcMissing or partial evidence for TW-CTRL-SAAS-ABUSE-001.
0 findings · 1 task · priority 60 -
medium
cause-406be7e28998873eMissing or partial evidence for TW-CTRL-SAAS-TENANT-001.
0 findings · 1 task · priority 60 -
medium
cause-7fc48b39d64abfceMissing or partial evidence for TW-CTRL-SAAS-CSRF-001.
0 findings · 1 task · priority 60 -
medium
cause-91d19e4cbd01a907Missing or partial evidence for TW-CTRL-SAAS-WEBHOOK-001.
0 findings · 1 task · priority 60 -
medium
cause-9ca2ae96a895fec2Missing or partial evidence for TW-CTRL-OUTBOUND-001.
0 findings · 1 task · priority 60 -
medium
cause-eff57b5fc20935b0Missing or partial evidence for TW-CTRL-REACT-002.
0 findings · 1 task · priority 60 -
medium
cause-f06a6f18ab0523e8Missing or partial evidence for TW-CTRL-INPUT-001.
0 findings · 1 task · priority 60 -
medium
cause-ff7aa5d2cf578a6dMissing or partial evidence for TW-CTRL-HEADERS-001.
0 findings · 1 task · priority 60 -
medium
cause-0812859c3fca4bc5Missing or partial evidence for TW-CTRL-SAAS-BILLING-001.
0 findings · 1 task · priority 45 -
medium
cause-084430276579bed6Missing or partial evidence for TW-CTRL-AUTHN-001.
0 findings · 1 task · priority 45 -
medium
cause-16c891eebcc7b336Missing or partial evidence for TW-CTRL-SAAS-RECOVERY-001.
0 findings · 1 task · priority 45
Only the 12 highest-priority root causes are shown here. The agent plan retains every bounded group and linked finding.
Supply chain, quality, structure, and duplication
Supply-chain checks
- dangerousLifecycleScripts: 0
- unsafeDependencySpecs: 0
- weakLockfileIntegrity: 0
- insecureLockfileUrls: 0
- unexpectedLockfileHosts: 0
- manifestLockMismatches: 0
Quality hotspots (200 of 259 retained)
- apps/marketing/src/app/app/settings/page.tsx:122 SettingsPage: complexity 49, 560 lines, 1 parameters
- apps/marketing/src/app/ativar-acesso/page.tsx:134 ActivateAccessPage: complexity 33, 248 lines, 1 parameters
- apps/marketing/src/components/app/workspace-analytics-destinations-panel.tsx:1128 DestinationCard: complexity 33, 220 lines, 1 parameters
- apps/marketing/src/components/auth/login-form.tsx:44 LoginForm: complexity 32, 398 lines, 1 parameters
- apps/marketing/src/app/app/billing/page.tsx:130 BillingPage: complexity 32, 268 lines, 1 parameters
- packages/billing/src/index.ts:1125 parseWebhook: complexity 32, 150 lines, 1 parameters
- scripts/lib/distribution.mjs:1306 createLocalizedTemplateStartHere: complexity 31, 553 lines, 3 parameters
- packages/auth/src/platform.ts:288 parsePlatformActivationIntentPayload: complexity 31, 103 lines, 1 parameters
- apps/marketing/src/app/app/[workspaceSlug]/dashboard/page.tsx:266 WorkspaceDashboardPage: complexity 30, 442 lines, 1 parameters
- packages/saas/src/index.ts:10647 claimBillingCheckoutForUser: complexity 30, 138 lines, 1 parameters
- packages/referrals-core/src/integrity.ts:367 buildReferralsStorageIntegrityReport: complexity 29, 119 lines, 1 parameters
- scripts/doctor-edition-upstreams.mjs:153 printPlanStatus: complexity 29, 79 lines, 3 parameters
- apps/analytics/src/lib/connections-store.ts:270 readStoredAnalyticsConnectionRecord: complexity 27, 108 lines, 1 parameters
- packages/booking-core/src/integrity.ts:278 buildBookingStorageIntegrityReport: complexity 26, 130 lines, 1 parameters
- packages/saas/src/index.ts:4498 mapBillingCheckoutClaimRecord: complexity 25, 104 lines, 1 parameters
- apps/marketing/src/components/auth/sign-up-form.tsx:45 SignUpForm: complexity 24, 433 lines, 1 parameters
- packages/saas/src/payment-analytics.ts:151 normalizeBillingRecordToPaymentTransaction: complexity 24, 55 lines, 2 parameters
- scripts/lib/distribution.mjs:4564 pruneBuyerSafeArtifactsForPlan: complexity 23, 258 lines, 2 parameters
- apps/marketing/src/app/invite/[token]/page.tsx:166 InvitePage: complexity 23, 193 lines, 1 parameters
- packages/saas/src/index.ts:4387 mapBillingRecord: complexity 23, 110 lines, 1 parameters
- packages/saas/src/index.ts:10549 completeBillingCheckoutClaim: complexity 23, 97 lines, 1 parameters
- apps/marketing/src/lib/analytics/destinations-shared.ts:136 isAnalyticsDestinationRecentDelivery: complexity 23, 29 lines, 1 parameters
- packages/auth/src/platform.ts:450 verifyPlatformActivationIntent: complexity 22, 165 lines, 1 parameters
- apps/marketing/src/lib/route-paths.ts:319 buildWorkspaceAwareAppPath: complexity 22, 56 lines, 3 parameters
- apps/marketing/src/lib/billing-repository-delivery-request.ts:28 isBillingRepositoryDeliverySnapshotEntry: complexity 22, 38 lines, 1 parameters
- apps/marketing/src/components/sections/pricing-hero.tsx:113 anonymous@113: complexity 21, 156 lines, 1 parameters
- packages/analytics-core/src/report-exports.ts:170 buildStandaloneAnalyticsExportCsv: complexity 21, 138 lines, 1 parameters
- apps/analytics/src/features/integrations/integrations-preview.tsx:278 readStandaloneConnection: complexity 21, 88 lines, 1 parameters
- packages/analytics-core/src/activation.ts:95 buildChecklist: complexity 21, 62 lines, 1 parameters
- apps/docs/src/lib/changelog.ts:49 readChangelogReleaseFileEntry: complexity 21, 43 lines, 2 parameters
- apps/marketing/src/app/admin/accounts/[userId]/page.tsx:195 AdminAccountDetailPage: complexity 20, 960 lines, 1 parameters
- apps/marketing/src/app/api/billing/checkout/route.ts:62 POST: complexity 20, 110 lines, 1 parameters
- scripts/setup-local.mjs:134 main: complexity 20, 106 lines, 0 parameters
- apps/analytics/src/lib/account-link.ts:234 createStandaloneAccountLinkState: complexity 20, 89 lines, 1 parameters
- packages/saas/src/index.ts:10786 registerBillingCheckoutForUser: complexity 20, 73 lines, 1 parameters
- apps/marketing/src/app/entrar/page.tsx:26 SignInPage: complexity 19, 125 lines, 1 parameters
- apps/marketing/src/app/admin/workspaces/[workspaceId]/page.tsx:70 AdminWorkspaceDetailPage: complexity 18, 549 lines, 1 parameters
- apps/marketing/src/app/api/support/route.ts:26 POST: complexity 18, 109 lines, 1 parameters
- packages/billing/src/index.ts:544 loadStripePricingCatalog: complexity 18, 96 lines, 0 parameters
- apps/analytics/src/lib/account.ts:252 mergeStoredAccountRecordIntoHostedReadModel: complexity 18, 89 lines, 1 parameters
- packages/saas/src/index.ts:8217 updatePrivacyRequestStatusForAdmin: complexity 18, 84 lines, 1 parameters
- apps/marketing/src/app/app/analytics/page-content.tsx:49 loadAnalyticsPageState: complexity 18, 83 lines, 1 parameters
- packages/saas/src/index.ts:10860 completeBillingCheckout: complexity 18, 73 lines, 1 parameters
- packages/ai/src/index.ts:285 readOpenAIResponsePayload: complexity 18, 71 lines, 1 parameters
- apps/analytics/src/lib/property-store.ts:142 readStoredAnalyticsPropertyRecord: complexity 18, 64 lines, 1 parameters
- apps/analytics/src/lib/connections.ts:312 buildUmamiEnvConnection: complexity 18, 55 lines, 1 parameters
- apps/marketing/src/lib/analytics/webhook-destination.ts:554 deliverAnalyticsWebhookPayloadForUser: complexity 17, 198 lines, 1 parameters
- apps/marketing/src/lib/analytics-dashboard-data.ts:2605 applyModeledFinancialMonthMetrics: complexity 17, 162 lines, 1 parameters
- apps/marketing/src/lib/analytics/operational-alerts.ts:80 getAnalyticsOperationalAlerts: complexity 17, 160 lines, 1 parameters
- scripts/vercel-env.mjs:310 collectIssues: complexity 17, 65 lines, 3 parameters
- apps/analytics/src/components/analytics-membership-manager.tsx:151 readMembershipResponse: complexity 17, 53 lines, 1 parameters
- apps/marketing/src/components/layout/navbar.tsx:43 Navbar: complexity 16, 404 lines, 1 parameters
- apps/analytics/src/app/api/connections/route.ts:34 POST: complexity 16, 150 lines, 1 parameters
- apps/marketing/src/components/pricing/pricing-plan-cards.tsx:42 anonymous@42: complexity 16, 111 lines, 1 parameters
- apps/marketing/src/lib/analytics/webhook-destination.ts:880 retryAnalyticsWebhookDeliveryForUser: complexity 16, 110 lines, 1 parameters
- packages/saas/src/index.ts:7736 upsertRuntimeFeatureFlagForAdmin: complexity 16, 98 lines, 1 parameters
- scripts/lib/release-edition-full.mjs:7 parseEditionReleaseFullArgs: complexity 16, 94 lines, 1 parameters
- packages/auth/src/captcha.ts:209 verifyCaptchaResponse: complexity 16, 93 lines, 1 parameters
- apps/analytics/src/components/analytics-handoff-panel.tsx:9 AnalyticsHandoffPanel: complexity 16, 88 lines, 1 parameters
- packages/analytics-core/src/stripe-client.ts:293 readStripeSubscription: complexity 16, 59 lines, 1 parameters
- apps/analytics/src/app/page.tsx:29 OverviewPage: complexity 15, 372 lines, 1 parameters
- apps/marketing/src/lib/analytics/webhook-redelivery-refresh.ts:154 refreshFailedWebhookDeliveries: complexity 15, 162 lines, 1 parameters
- apps/marketing/src/components/app/workspace-danger-zone-panel.tsx:50 WorkspaceDangerZonePanel: complexity 15, 158 lines, 1 parameters
- apps/marketing/src/components/app/workspace-role-assignments-section.tsx:91 anonymous@91: complexity 15, 125 lines, 1 parameters
- packages/analytics-core/src/stripe-live-provider.ts:478 getRevenueSnapshot: complexity 15, 116 lines, 1 parameters
- apps/analytics/src/lib/onboarding.ts:206 buildSteps: complexity 15, 113 lines, 1 parameters
- apps/marketing/src/components/app/analytics/analytics-data-freshness-card.tsx:197 AnalyticsDataFreshnessCard: complexity 15, 106 lines, 1 parameters
- scripts/import-stripe-products.mjs:193 parseCsv: complexity 15, 62 lines, 1 parameters
- apps/marketing/src/lib/analytics-dashboard-data.ts:2845 buildYearComparisonData: complexity 15, 60 lines, 1 parameters
- scripts/lib/distribution.mjs:1971 buildFilteredDockerCompose: complexity 15, 57 lines, 1 parameters
- scripts/verify-env-example.mjs:198 buildExpectedEnvKeys: complexity 15, 42 lines, 1 parameters
- packages/auth/src/session-payload.ts:35 isBetterAuthUserPayload: complexity 15, 24 lines, 1 parameters
- apps/marketing/src/lib/analytics/export.ts:233 buildAnalyticsExportForUser: complexity 14, 145 lines, 1 parameters
- apps/marketing/src/components/app/settings-auth-security-mfa-section.tsx:32 SettingsAuthSecurityMfaSection: complexity 14, 140 lines, 1 parameters
- packages/saas/src/index.ts:5788 assignWorkspaceRoleToMemberForUser: complexity 14, 130 lines, 1 parameters
- apps/marketing/src/app/api/billing/credits/checkout/route.ts:50 POST: complexity 14, 125 lines, 1 parameters
- apps/marketing/src/app/api/contact/route.ts:28 POST: complexity 14, 117 lines, 1 parameters
- packages/booking-core/src/integrity.ts:147 validateReservation: complexity 14, 103 lines, 2 parameters
- scripts/setup-verify.mjs:291 main: complexity 14, 85 lines, 0 parameters
- apps/analytics/src/features/integrations/integrations-preview.tsx:429 IntegrationsPreview: complexity 13, 528 lines, 1 parameters
- apps/marketing/src/components/auth/change-password-form.tsx:18 ChangePasswordForm: complexity 13, 184 lines, 0 parameters
- apps/marketing/src/lib/analytics-dashboard-data.ts:3098 buildAnalyticsDashboardData: complexity 13, 168 lines, 1 parameters
- apps/analytics/src/app/api/properties/route.ts:35 POST: complexity 13, 144 lines, 1 parameters
- apps/marketing/src/components/ui/sidebar.tsx:150 anonymous@150: complexity 13, 107 lines, 2 parameters
- apps/marketing/src/app/api/waitlist/route.ts:38 POST: complexity 13, 100 lines, 1 parameters
- scripts/deploy-check.mjs:223 maybeValidatePublishedEditions: complexity 13, 99 lines, 3 parameters
- packages/saas/src/index.ts:7835 rollbackRuntimeFeatureFlagForAdmin: complexity 13, 96 lines, 1 parameters
- packages/saas/src/index.ts:10265 createProjectDocumentForUser: complexity 13, 92 lines, 1 parameters
- packages/referrals-core/src/integrity.ts:125 validateEntry: complexity 13, 91 lines, 2 parameters
- packages/booking-core/src/recurrence.ts:270 expandAvailabilityRules: complexity 13, 87 lines, 1 parameters
- apps/marketing/src/components/app/workspace-analytics-destinations-panel.tsx:834 WebhookDeliveryHistoryItem: complexity 13, 86 lines, 1 parameters
- apps/marketing/src/components/app/docs-assistant-panel.tsx:27 DocsAssistantPanel: complexity 12, 182 lines, 1 parameters
- apps/marketing/src/components/auth/reset-password-form.tsx:22 ResetPasswordForm: complexity 12, 167 lines, 0 parameters
- apps/marketing/src/app/admin/page.tsx:41 AdminOverviewPage: complexity 12, 140 lines, 0 parameters
- packages/analytics-core/src/snapshot-overview.ts:139 buildStandaloneSnapshotDocumentFromPreview: complexity 12, 95 lines, 1 parameters
- scripts/lib/distribution.mjs:982 buildTemplateProductionChecks: complexity 12, 94 lines, 2 parameters
- scripts/import-stripe-products.mjs:395 upsertProduct: complexity 12, 84 lines, 4 parameters
- apps/analytics/src/lib/operations.ts:532 buildGuardrails: complexity 12, 82 lines, 1 parameters
- apps/marketing/src/components/app/analytics/analytics-billing-usage-card.tsx:323 AnalyticsBillingUsageCard: complexity 11, 123 lines, 1 parameters
- apps/analytics/src/app/api/account/members/route.ts:29 POST: complexity 11, 108 lines, 1 parameters
- apps/marketing/src/app/app/projects/actions.ts:220 uploadProjectDocumentAction: complexity 11, 103 lines, 3 parameters
- scripts/import-stripe-products.mjs:569 main: complexity 11, 86 lines, 0 parameters
- apps/marketing/src/app/app/layout.tsx:26 AuthenticatedAppLayout: complexity 11, 84 lines, 1 parameters
- packages/referrals-core/src/integrity.ts:235 validateBatch: complexity 11, 84 lines, 2 parameters
- packages/saas/src/index.ts:6314 updateWorkspaceIdentityForUser: complexity 11, 84 lines, 1 parameters
- apps/analytics/src/lib/operations.ts:748 buildOperationsKpis: complexity 11, 82 lines, 1 parameters
- apps/marketing/src/app/app/billing/actions.ts:34 syncBillingUsageMeterAction: complexity 11, 80 lines, 1 parameters
- apps/marketing/src/components/app/workspace-roles-manager.tsx:67 WorkspaceRolesManager: complexity 10, 328 lines, 1 parameters
- packages/referrals-core/src/memory-store.ts:50 createReferralsMemoryStore: complexity 10, 314 lines, 1 parameters
- apps/analytics/src/features/settings/settings-preview.tsx:82 SettingsPreview: complexity 10, 241 lines, 1 parameters
- apps/analytics/src/components/analytics-operations-manager.tsx:21 AnalyticsOperationsManager: complexity 10, 203 lines, 1 parameters
- apps/marketing/src/components/app/workspace-analytics-destinations-panel.tsx:1374 WebhookHistorySheet: complexity 10, 128 lines, 1 parameters
- packages/saas/src/index.ts:6076 acceptWorkspaceInvitationRecord: complexity 10, 113 lines, 2 parameters
- apps/marketing/src/components/app/workspace-analytics-connections-panel.tsx:128 AnalyticsProviderConnectionForm: complexity 10, 106 lines, 1 parameters
- packages/billing/src/index.ts:1334 getBillingUsageMeterSummary: complexity 10, 98 lines, 1 parameters
- apps/marketing/src/app/app/settings/actions.ts:1142 deleteWorkspaceAction: complexity 10, 94 lines, 1 parameters
- apps/marketing/src/app/app/[workspaceSlug]/dashboard/page.tsx:175 renderDeliveryEntry: complexity 10, 90 lines, 1 parameters
- apps/marketing/src/components/sections/blog-post-layout.tsx:15 BlogPostLayout: complexity 10, 88 lines, 1 parameters
- apps/marketing/src/components/app/analytics/traffic-analytics-summary.tsx:534 TrafficAnalyticsSummary: complexity 10, 85 lines, 1 parameters
- packages/auth/src/index.ts:1063 listAuthUsersForAdmin: complexity 10, 84 lines, 1 parameters
- apps/analytics/src/app/api/operations/route.ts:45 POST: complexity 10, 83 lines, 1 parameters
- apps/marketing/src/lib/analytics-dashboard-data.ts:1787 buildModeledRecurringMetrics: complexity 9, 444 lines, 1 parameters
- scripts/lib/distribution.mjs:3262 genericizeExportBranding: complexity 9, 353 lines, 1 parameters
- apps/marketing/src/app/admin/audit/page.tsx:67 AdminAuditPage: complexity 9, 278 lines, 1 parameters
- packages/booking-core/src/memory-store.ts:62 createBookingMemoryStore: complexity 9, 223 lines, 1 parameters
- apps/marketing/src/components/app/privacy-data-panel.tsx:46 PrivacyDataPanel: complexity 9, 178 lines, 1 parameters
- apps/marketing/src/lib/analytics/snapshot-refresh.ts:14 refreshDailyAnalyticsSnapshots: complexity 9, 174 lines, 1 parameters
- packages/saas/src/index.ts:9748 createWorkspaceInvitationForUser: complexity 9, 127 lines, 1 parameters
- apps/marketing/src/components/app/settings-auth-security-email-section.tsx:24 SettingsAuthSecurityEmailSection: complexity 9, 110 lines, 1 parameters
- packages/saas/src/index.ts:11549 anonymous@11549: complexity 9, 109 lines, 1 parameters
- apps/marketing/src/lib/analytics/snapshot-history.ts:101 getAnalyticsSnapshotHistoryForUser: complexity 9, 90 lines, 1 parameters
- apps/marketing/src/app/app/settings/actions.ts:554 saveProfileSettingsAction: complexity 9, 88 lines, 1 parameters
- apps/marketing/src/components/app/workspace-analytics-destinations-panel.tsx:1622 WorkspaceAnalyticsDestinationsPanel: complexity 8, 217 lines, 1 parameters
- apps/marketing/src/app/admin/messages/page.tsx:40 AdminMessagesPage: complexity 8, 193 lines, 1 parameters
- apps/marketing/src/components/app/workspace-activity-log-panel.tsx:43 WorkspaceActivityLogPanel: complexity 8, 164 lines, 1 parameters
- apps/marketing/src/components/app/members-page-content.tsx:421 anonymous@421: complexity 8, 157 lines, 1 parameters
- apps/marketing/src/components/app/workspace-analytics-destinations-panel.tsx:927 WebhookDeliveryHealthCard: complexity 8, 157 lines, 1 parameters
- apps/analytics/src/components/analytics-account-bootstrap-form.tsx:38 AnalyticsAccountBootstrapForm: complexity 8, 154 lines, 1 parameters
- apps/marketing/src/components/app/settings-workspace-form.tsx:31 SettingsWorkspaceForm: complexity 8, 149 lines, 1 parameters
- apps/marketing/src/lib/app-shell-navigation.ts:79 buildAppShellNavGroups: complexity 8, 131 lines, 1 parameters
- apps/marketing/src/app/admin/runtime-flags/page.tsx:170 anonymous@170: complexity 8, 126 lines, 1 parameters
- apps/marketing/src/app/api/billing/delivery/[deliveryPlan]/download/route.ts:38 GET: complexity 8, 124 lines, 2 parameters
- packages/saas/src/index.ts:11382 anonymous@11382: complexity 8, 121 lines, 1 parameters
- packages/saas/src/index.ts:11252 anonymous@11252: complexity 8, 117 lines, 1 parameters
- packages/saas/src/index.ts:2303 consumeSharedRateLimit: complexity 8, 116 lines, 1 parameters
- apps/analytics/src/lib/sync.ts:33 syncStandaloneSnapshot: complexity 8, 111 lines, 0 parameters
- packages/analytics-core/src/umami-live-provider.ts:230 getTrafficSnapshot: complexity 8, 107 lines, 1 parameters
- packages/saas/src/index.ts:5423 listWorkspaceRolesForUser: complexity 8, 103 lines, 1 parameters
- apps/marketing/src/components/app/workspace-access-panel.tsx:204 anonymous@204: complexity 8, 102 lines, 1 parameters
- apps/marketing/src/components/app/analytics/analytics-export-actions.tsx:260 AnalyticsExportActions: complexity 8, 96 lines, 1 parameters
- packages/saas/src/index.ts:9600 listAnalyticsSnapshotTargets: complexity 8, 88 lines, 0 parameters
- apps/marketing/src/components/app/workspace-access-panel.tsx:65 WorkspaceAccessPanel: complexity 7, 396 lines, 1 parameters
- apps/marketing/src/components/app/project-documents-panel.tsx:40 ProjectDocumentsPanel: complexity 7, 156 lines, 1 parameters
- apps/marketing/src/components/app/settings-auth-security-sessions-section.tsx:29 SettingsAuthSecuritySessionsSection: complexity 7, 148 lines, 1 parameters
- apps/marketing/src/components/auth/two-factor-form.tsx:23 TwoFactorForm: complexity 7, 144 lines, 0 parameters
- apps/analytics/src/components/analytics-activation-panel.tsx:7 AnalyticsActivationPanel: complexity 7, 134 lines, 1 parameters
- apps/marketing/src/components/app/members-page-content.tsx:595 buildMembersPageMutationsController: complexity 7, 120 lines, 1 parameters
- apps/marketing/src/lib/analytics/export.ts:116 buildAnalyticsExportCsv: complexity 7, 116 lines, 1 parameters
- apps/marketing/src/app/admin/waitlist/page.tsx:140 anonymous@140: complexity 7, 115 lines, 1 parameters
- apps/marketing/src/app/admin/audit/page.tsx:237 anonymous@237: complexity 7, 100 lines, 1 parameters
- apps/analytics/src/components/analytics-onboarding-manager.tsx:9 AnalyticsOnboardingManager: complexity 7, 89 lines, 1 parameters
- apps/marketing/src/components/app/analytics/analytics-snapshot-history.tsx:422 AnalyticsSnapshotHistory: complexity 7, 87 lines, 1 parameters
- apps/marketing/src/lib/developer-api/analytics-v1.ts:312 getDeveloperApiAnalyticsOverview: complexity 7, 80 lines, 1 parameters
- apps/analytics/src/components/analytics-property-manager.tsx:166 AnalyticsPropertyManager: complexity 6, 352 lines, 1 parameters
- apps/marketing/src/components/sections/contact-section.tsx:37 ContactSection: complexity 6, 319 lines, 1 parameters
- apps/marketing/src/components/sections/support-section.tsx:35 SupportSection: complexity 6, 242 lines, 1 parameters
- apps/marketing/src/components/app/developer-api-keys-panel.tsx:45 DeveloperApiKeysPanel: complexity 6, 224 lines, 1 parameters
- apps/analytics/src/components/analytics-membership-manager.tsx:209 AnalyticsMembershipManager: complexity 6, 196 lines, 1 parameters
- apps/marketing/src/components/app/settings-auth-security-panel.tsx:159 SettingsAuthSecurityPanel: complexity 6, 154 lines, 1 parameters
- scripts/lib/distribution.mjs:4413 pruneLocalizedMessagesForPlan: complexity 6, 150 lines, 2 parameters
- apps/analytics/src/components/analytics-activation-progress-form.tsx:122 AnalyticsActivationProgressForm: complexity 6, 148 lines, 1 parameters
- apps/marketing/src/app/admin/messages/[submissionId]/page.tsx:32 AdminMessageDetailPage: complexity 6, 143 lines, 1 parameters
- packages/referrals-core/src/playbooks.ts:19 getReferralsOperationalPlaybook: complexity 6, 128 lines, 1 parameters
- apps/marketing/src/components/app/notification-center-panel.tsx:27 NotificationCenterPanel: complexity 6, 108 lines, 1 parameters
- apps/analytics/src/lib/operations.ts:424 resolveFreshnessItems: complexity 6, 107 lines, 1 parameters
- apps/analytics/src/features/history/history-surface.tsx:25 HistorySurface: complexity 6, 106 lines, 1 parameters
- apps/marketing/src/components/sections/hero-section.tsx:49 HeroSection: complexity 6, 102 lines, 0 parameters
- packages/booking-core/src/availability.ts:87 buildBookableSlots: complexity 6, 94 lines, 1 parameters
- apps/marketing/src/lib/analytics-dashboard-data.ts:1690 buildModeledFinancialMonthMetrics: complexity 6, 90 lines, 1 parameters
- packages/saas/src/index.ts:8014 getAccountDeletionReadinessForUser: complexity 6, 90 lines, 1 parameters
- apps/marketing/src/lib/analytics/combined-analytics-overview.ts:253 getCombinedAnalyticsOverviewForUser: complexity 6, 87 lines, 2 parameters
- packages/saas/src/index.ts:5668 updateWorkspaceRoleForUser: complexity 6, 84 lines, 1 parameters
- scripts/lib/distribution.mjs:3915 genericizeExportResidualContent: complexity 5, 448 lines, 1 parameters
- apps/marketing/src/app/admin/accounts/[userId]/page.tsx:763 anonymous@763: complexity 5, 212 lines, 1 parameters
- apps/analytics/src/components/analytics-commercial-manager.tsx:54 AnalyticsCommercialManager: complexity 5, 209 lines, 1 parameters
- apps/marketing/src/components/layout/footer.tsx:21 Footer: complexity 5, 180 lines, 1 parameters
- packages/saas/src/index.ts:11505 expireDueWorkspaceCredits: complexity 5, 167 lines, 1 parameters
- apps/marketing/src/components/app/app-support-page.tsx:38 AppSupportPage: complexity 5, 157 lines, 1 parameters
- apps/marketing/src/components/app/workspace-traffic-analytics-panel.tsx:519 WorkspaceTrafficAnalyticsPanel: complexity 5, 152 lines, 1 parameters
- apps/docs/src/app/[locale]/changelog/[slug]/page.tsx:45 ChangelogDetailPage: complexity 5, 117 lines, 1 parameters
- packages/referrals-core/src/payouts.ts:40 createCommissionPayoutBatch: complexity 5, 117 lines, 1 parameters
- packages/booking-core/src/playbooks.ts:19 getBookingOperationalPlaybook: complexity 5, 104 lines, 1 parameters
- apps/marketing/src/lib/analytics/destinations.ts:593 getAnalyticsDestinationsOverviewForUser: complexity 5, 90 lines, 1 parameters
- apps/marketing/src/components/auth/sign-up-form.tsx:227 anonymous@227: complexity 5, 83 lines, 1 parameters
- apps/marketing/src/components/app/members-page-content.tsx:268 MembersPageHeader: complexity 5, 82 lines, 1 parameters
- packages/saas/src/index.ts:6399 getWorkspaceDeletionReadinessForUser: complexity 5, 81 lines, 1 parameters
- apps/marketing/src/components/sections/pricing-hero.tsx:63 MetafiPricingHero: complexity 4, 215 lines, 0 parameters
- apps/marketing/src/app/admin/accounts/page.tsx:37 AdminAccountsPage: complexity 4, 209 lines, 1 parameters
- apps/marketing/src/app/admin/workspaces/page.tsx:34 AdminWorkspacesPage: complexity 4, 206 lines, 1 parameters
- apps/marketing/src/components/sections/waitlist-section.tsx:25 WaitlistSection: complexity 4, 168 lines, 1 parameters
Unused file candidates
- apps/docs/src/app/robots.ts
- apps/docs/src/app/sitemap.ts
- apps/marketing/src/app/app/error.tsx
- apps/marketing/src/app/app/loading.tsx
- apps/marketing/src/app/error.tsx
- apps/marketing/src/app/global-error.tsx
- apps/marketing/src/app/loading.tsx
- apps/marketing/src/app/not-found.tsx
- apps/marketing/src/app/robots.ts
- apps/marketing/src/app/sitemap.ts
- apps/marketing/src/components/app/analytics/analytics-billing-usage-card.tsx
- apps/marketing/src/components/app/analytics/analytics-data-freshness-card.tsx
- apps/marketing/src/components/app/analytics/analytics-operational-alerts-card.tsx
- apps/marketing/src/components/app/analytics/analytics-snapshot-history.tsx
- apps/marketing/src/components/app/analytics/dashboard6-reference.tsx
- apps/marketing/src/components/app/app-placeholder-page.tsx
- apps/marketing/src/components/app/project-documents-panel.tsx
- apps/marketing/src/components/app/workspace-access-panel.tsx
- apps/marketing/src/components/auth/change-password-form.tsx
- apps/marketing/src/components/layout/banner.tsx
- apps/marketing/src/components/layout/error-boundary-state.tsx
- apps/marketing/src/components/layout/page-loading-state.tsx
- apps/marketing/src/components/sections/blog-featured.tsx
- apps/marketing/src/components/sections/blog-grid.tsx
- apps/marketing/src/components/sections/careers-hero.tsx
- apps/marketing/src/components/sections/feature-benefits.tsx
- apps/marketing/src/components/sections/feature-pricing.tsx
- apps/marketing/src/components/sections/features-hero.tsx
- apps/marketing/src/components/sections/features-included.tsx
- apps/marketing/src/components/sections/integrations-hero.tsx
- apps/marketing/src/components/sections/job-openings.tsx
- apps/marketing/src/components/sections/logos-section.tsx
- apps/marketing/src/components/sections/partner-logos.tsx
- apps/marketing/src/components/sections/perks-section.tsx
- apps/marketing/src/components/sections/pricing-hero.tsx
- apps/marketing/src/components/sections/support-section.tsx
- apps/marketing/src/components/sections/team-section.tsx
- apps/marketing/src/components/sections/testimonials-section.tsx
- apps/marketing/src/components/theme-toggle.tsx
- apps/marketing/src/components/ui/animation-checkout.tsx
- apps/marketing/src/components/ui/animation-invoicing.tsx
- apps/marketing/src/components/ui/animation-payment-link.tsx
- apps/marketing/src/components/ui/animation-recurring-bill.tsx
- apps/marketing/src/components/ui/carousel.tsx
- apps/marketing/src/components/ui/navigation-menu.tsx
- apps/marketing/src/components/ui/shadow-root-host.tsx
- apps/marketing/src/lib/analytics/billing-plan-guidance.ts
- apps/marketing/src/lib/mdx.tsx
- apps/marketing/src/types/post.ts
- scripts/delivery-ready.mjs
- scripts/dev-marketing.mjs
- scripts/docker-app-start.mjs
- scripts/run-marketing-next.mjs
- scripts/run-playwright-web-server.mjs
- scripts/verify-analytics-boundary.mjs
Unused dependency candidates
- @hookform/resolvers
- @mdx-js/loader
- @mdx-js/react
- embla-carousel-autoplay
- react-hook-form
- tailwindcss-animate
Dependency cycles (1 of 1 retained)
- packages/saas/src/index.ts → packages/saas/src/payment-analytics.ts
Largest duplicate blocks
- apps/marketing/src/app/api/analytics/traffic/countries/route.ts:1-46 and apps/marketing/src/app/api/analytics/traffic/referrers/route.ts:1-46
- apps/marketing/src/app/api/analytics/traffic/countries/route.ts:1-46 and apps/marketing/src/app/api/analytics/traffic/top-pages/route.ts:1-46
- apps/marketing/src/app/api/analytics/traffic/countries/route.ts:1-46 and apps/marketing/src/app/api/analytics/traffic/devices/route.ts:1-46
- apps/marketing/src/app/api/analytics/limits/route.ts:1-43 and apps/marketing/src/app/api/analytics/usage/route.ts:1-43
- apps/marketing/src/app/api/analytics/limits/route.ts:8-44 and apps/marketing/src/app/api/analytics/usage/route.ts:8-44
- apps/marketing/src/app/api/contact/route.ts:40-71 and apps/marketing/src/app/api/support/route.ts:38-69
- scripts/lib/release-edition-candidate.mjs:32-62 and scripts/release-edition-upstreams.mjs:23-53
- apps/marketing/src/app/api/v1/analytics/limits/route.ts:1-26 and apps/marketing/src/app/api/v1/analytics/usage/route.ts:1-26
- apps/marketing/src/app/api/analytics/business/churn/route.ts:3-27 and apps/marketing/src/app/api/analytics/business/overview/route.ts:3-27
- apps/marketing/src/app/api/analytics/destinations/deliveries/health/route.ts:7-31 and apps/marketing/src/app/api/analytics/destinations/deliveries/route.ts:10-34
- apps/marketing/src/app/api/analytics/business/churn/route.ts:3-27 and apps/marketing/src/app/api/analytics/business/subscriptions/route.ts:3-27
- apps/marketing/src/app/api/analytics/traffic/countries/route.ts:1-25 and apps/marketing/src/app/api/analytics/traffic/overview/route.ts:1-25
- apps/marketing/src/app/api/analytics/business/churn/route.ts:27-50 and apps/marketing/src/app/api/analytics/business/overview/route.ts:27-50
- apps/marketing/src/app/api/analytics/business/churn/route.ts:27-50 and apps/marketing/src/app/api/analytics/business/subscriptions/route.ts:27-50
- apps/marketing/src/app/api/analytics/business/churn/route.ts:9-30 and apps/marketing/src/app/api/analytics/destinations/deliveries/route.ts:9-32
- apps/marketing/src/components/app/email-sequence-preferences-panel.tsx:85-106 and apps/marketing/src/components/app/notification-preferences-panel.tsx:126-147
- scripts/lib/release-edition-candidate.mjs:32-53 and scripts/lib/release-edition-full.mjs:41-62
- apps/marketing/src/app/admin/waitlist/actions.ts:41-62 and apps/marketing/src/app/admin/waitlist/actions.ts:90-111
- scripts/lib/edition-upstream.mjs:23-44 and scripts/run-marketing-next.mjs:34-55
- scripts/lib/release-edition-candidate.mjs:43-63 and scripts/release-edition-upstreams.mjs:34-54
- scripts/check-edition-upstreams.mjs:22-42 and scripts/release-edition-upstreams.mjs:18-38
- scripts/init-edition-upstreams.mjs:33-53 and scripts/lib/release-edition-full.mjs:36-56
- packages/booking-core/src/persisted-store.ts:89-108 and packages/referrals-core/src/persisted-store.ts:118-137
- apps/analytics/src/app/api/account/members/route.ts:20-39 and apps/analytics/src/app/api/properties/route.ts:26-45
- apps/marketing/src/components/app/email-sequence-preferences-panel.tsx:37-56 and apps/marketing/src/components/app/notification-preferences-panel.tsx:53-72
- apps/analytics/src/app/api/account/members/route.ts:20-39 and apps/analytics/src/app/api/connections/route.ts:25-44
- apps/marketing/src/components/ui/animation-checkout.tsx:44-62 and apps/marketing/src/components/ui/animation-payment-link.tsx:53-71
- scripts/dev-marketing.mjs:20-38 and scripts/lib/edition-upstream.mjs:26-44
- apps/marketing/src/app/api/billing/webhook/route.ts:20-38 and apps/marketing/src/app/api/billing/webhook/route.ts:87-105
- apps/marketing/src/app/api/analytics/business/churn/route.ts:6-24 and apps/marketing/src/app/api/analytics/overview/route.ts:2-23
- scripts/check-edition-upstreams.mjs:22-38 and scripts/push-edition-upstreams.mjs:17-33
- scripts/push-edition-upstreams.mjs:1-17 and scripts/release-edition-upstreams.mjs:1-17
- apps/marketing/src/app/api/analytics/destinations/route.ts:7-23 and apps/marketing/src/app/api/analytics/limits/route.ts:7-23
- apps/marketing/src/app/api/contact/route.ts:56-71 and apps/marketing/src/app/api/waitlist/route.ts:65-80
- apps/marketing/src/app/api/analytics/business/churn/route.ts:6-21 and apps/marketing/src/app/api/analytics/destinations/route.ts:2-17
- apps/marketing/src/app/api/billing/webhook/route.ts:105-120 and apps/marketing/src/app/api/billing/webhook/route.ts:38-53
- packages/booking-core/src/storage-document.ts:13-28 and packages/referrals-core/src/storage-document.ts:13-28
- apps/marketing/src/i18n/server.ts:51-65 and apps/marketing/src/i18n/server.ts:72-86
- apps/marketing/src/app/api/contact/route.ts:23-37 and apps/marketing/src/app/api/support/route.ts:21-35
- apps/marketing/src/components/sections/logos-section.tsx:25-39 and apps/marketing/src/components/sections/logos-section.tsx:43-57
- apps/marketing/src/components/sections/careers-hero.tsx:25-39 and apps/marketing/src/components/sections/integrations-hero.tsx:39-54
- packages/referrals-core/src/overview.ts:8-21 and packages/referrals-core/src/review.ts:29-42
- apps/marketing/src/app/api/analytics/business/churn/route.ts:9-22 and apps/marketing/src/app/api/analytics/destinations/deliveries/health/route.ts:6-19
- apps/marketing/src/app/api/analytics/business/churn/route.ts:9-22 and apps/marketing/src/app/api/analytics/business/revenue-series/route.ts:10-23
- apps/marketing/src/app/app/accounts/page.tsx:9-21 and apps/marketing/src/app/app/notifications/page.tsx:7-19
- apps/marketing/src/app/api/analytics/traffic/countries/route.ts:25-37 and apps/marketing/src/app/api/analytics/traffic/overview/route.ts:25-37
- scripts/edition-publish-if-needed.mjs:2-14 and scripts/edition-publish-status.mjs:1-13
- apps/marketing/src/lib/analytics/demo-analytics.ts:6-18 and apps/marketing/src/lib/analytics/snapshot-history.ts:41-53
- apps/marketing/src/app/app/accounts/page.tsx:10-21 and apps/marketing/src/app/app/members/page.tsx:12-23
- packages/referrals-core/src/compliance.ts:2-13 and packages/referrals-core/src/overview.ts:8-19
- apps/marketing/src/app/app/accounts/page.tsx:10-21 and apps/marketing/src/app/app/settings/developer/page.tsx:14-25
- apps/marketing/src/app/app/members/page.tsx:12-23 and apps/marketing/src/app/app/settings/roles/page.tsx:21-32
- apps/marketing/src/app/api/analytics/connections/umami/disable/route.ts:37-48 and apps/marketing/src/app/api/analytics/connections/umami/enable/route.ts:41-52
- apps/marketing/src/components/sections/logos-section.tsx:3-13 and apps/marketing/src/components/sections/partner-logos.tsx:7-17
These measurements are bounded review evidence, not vulnerabilities or proof of adequate testing.
All findings
6 review candidates. Open one row for evidence, remediation, analysis, and human disposition.
highConfigured webhook destination lacks complete SSRF controlsapps/marketing/src/lib/analytics/webhook-destination.ts
What CodebaseScan found
A webhook or destination delivery module sends a dynamic URL without mechanical evidence that private networks are rejected and automatic redirects are disabled. The value may come from stored configuration rather than the current request.
Why it matters
If confirmed, this could affect the effective protection provided by application or deployment settings. The high label comes from the detector; this report does not establish runtime exploitability.
Where to look
apps/marketing/src/lib/analytics/webhook-destination.ts:603–608
fetch sends a dynamic configured destination without complete SSRF control evidence.
Show captured source
try {
const response = await fetch(resolved.endpointUrl, {
method: "POST",
headers: {
"content-type": "application/json",
How to verify manually
- Trace the captured declaration to the effective environment or framework configuration.
- Verify the resulting runtime behavior separately; source declarations alone are not proof.
Confidence and limitations
Confidence: medium · Detector: Code flow · Rule: TW-AST005
- Review the cited evidence and scanner coverage before deciding.
What to do next
Resolve destinations from a server-owned allowlist or reject private, loopback, link-local, and metadata addresses after DNS resolution. Disable automatic redirects and revalidate every followed location.
mediumSensitive-shaped value is placed in a URL parameterapps/analytics/src/lib/handoff.ts
What CodebaseScan found
A URL or search-parameter key names credential or personal data. URLs can reach histories, logs, referrers, and monitoring systems.
Why it matters
If confirmed, this could affect how personal or sensitive data is collected, exposed, retained, or transferred. The medium label comes from the detector; this report does not establish runtime exploitability.
Where to look
apps/analytics/src/lib/handoff.ts:109–114
Sensitive-shaped URL parameter key: ownerEmail.
Show captured source
if (input.ownerEmail) {
params.set("ownerEmail", input.ownerEmail);
}
if (input.ownerName) {
How to verify manually
- Start at the cited line and trace the value or operation through the local guards shown in source.
- Confirm the input, caller, authorization context, and final operation before accepting or rejecting the candidate.
Confidence and limitations
Confidence: medium · Detector: Privacy check · Rule: TW-PRIV001
- Review the cited evidence and scanner coverage before deciding.
What to do next
Keep sensitive values out of URLs. Use a protected request body or an opaque, short-lived reference where appropriate.
lowNew-tab link lacks explicit referrer protectionapps/marketing/src/components/layout/banner.tsx
What CodebaseScan found
A target=_blank link does not declare noreferrer. Referrer disclosure may remain; noreferrer also provides opener isolation in modern browsers.
Why it matters
If confirmed, this could affect the effective protection provided by application or deployment settings. The low label comes from the detector; this report does not establish runtime exploitability.
Where to look
apps/marketing/src/components/layout/banner.tsx:39–44
a opens a new tab without complete rel protection.
Show captured source
</span>
<Button size="sm" variant="secondary" asChild>
<a href={url} target="_blank" rel="noopener">
Get Template
</a>
</Button>
How to verify manually
- Trace the captured declaration to the effective environment or framework configuration.
- Verify the resulting runtime behavior separately; source declarations alone are not proof.
Confidence and limitations
Confidence: medium · Detector: React check · Rule: TW-REACT006
- Review the cited evidence and scanner coverage before deciding.
What to do next
Add rel="noopener noreferrer" to external new-tab links.
lowCaught failure is silently discardedpackages/billing/src/index.ts
What CodebaseScan found
An undocumented empty catch block discards an exception with no recovery, observability, or explicit rationale.
Why it matters
If confirmed, this could affect timeouts, retries, duplicate work, cleanup, and predictable failure behavior. The low label comes from the detector; this report does not establish runtime exploitability.
Where to look
packages/billing/src/index.ts:632–637
Catch block contains no statements or documented rationale.
Show captured source
catalog[definition.id][targetCurrency] = validatedPrice;
} catch {}
}
}
How to verify manually
- Start at the cited line and trace the value or operation through the local guards shown in source.
- Confirm the input, caller, authorization context, and final operation before accepting or rejecting the candidate.
Confidence and limitations
Confidence: medium · Detector: Reliability check · Rule: TW-REL002
- Review the cited evidence and scanner coverage before deciding.
What to do next
Handle the expected failure, add bounded observability, rethrow it, or document a narrow intentional ignore next to explicit logic.
lowCaught failure is silently discardedscripts/import-stripe-products.mjs
What CodebaseScan found
An undocumented empty catch block discards an exception with no recovery, observability, or explicit rationale.
Why it matters
If confirmed, this could affect timeouts, retries, duplicate work, cleanup, and predictable failure behavior. The low label comes from the detector; this report does not establish runtime exploitability.
Where to look
scripts/import-stripe-products.mjs:442–447
Catch block contains no statements or documented rationale.
Show captured source
return { action: "update-product", product: updatedProduct };
}
} catch {}
}
const matchedProduct = await findExistingProduct(stripe, plan);
How to verify manually
- Start at the cited line and trace the value or operation through the local guards shown in source.
- Confirm the input, caller, authorization context, and final operation before accepting or rejecting the candidate.
Confidence and limitations
Confidence: medium · Detector: Reliability check · Rule: TW-REL002
- Review the cited evidence and scanner coverage before deciding.
What to do next
Handle the expected failure, add bounded observability, rethrow it, or document a narrow intentional ignore next to explicit logic.
lowDeclared response security-header coverage is incompleteapps/analytics/next.config.ts
What CodebaseScan found
CodebaseScan could not find these declarations in the captured Next.js, proxy, or deployment configuration: Content-Security-Policy, Strict-Transport-Security, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, frame protection. A CDN, ingress, framework default, or production-only layer outside this snapshot may still provide them.
Why it matters
If confirmed, this could affect the effective protection provided by application or deployment settings. The low label comes from the detector; this report does not establish runtime exploitability.
Where to look
apps/analytics/next.config.ts:1–4
One or more recommended browser security policies were not found across the captured configuration sources. This is a coverage candidate, not proof that the runtime response is unsafe.
Show captured source
import { dirname, resolve } from "node:path";
import { fileURLToPath } from "node:url";
import type { NextConfig } from "next";
How to verify manually
- Trace the captured declaration to the effective environment or framework configuration.
- Verify the resulting runtime behavior separately; source declarations alone are not proof.
Confidence and limitations
Confidence: low · Detector: Security posture · Rule: TW-P001
- Review the cited evidence and scanner coverage before deciding.
What to do next
Confirm the effective production response headers. Define missing policy at one authoritative layer and use the opt-in HTTP probe to verify what reaches a browser.