This report summarizes scanner evidence for open-legal-products/mike. SynthScan examined 511,439 lines of code across 1962 source files, recording 853 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 2.0 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 728 finding(s).
Are imports declared and package/API names verified? 46 finding(s).
Are wrappers, guards, and repeated structures necessary? 616 finding(s).
Which changes need focused human review? 853 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 853 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/src/app/(pages)/assistant/chat/[id]/page.tsx | 21 | function AssistantChatPageForWorkspace() { | CODE |
| LOW | …src/app/(pages)/organizations/[id]/settings/layout.tsx | 9 | export default function OrganizationSettingsLayout({ | CODE |
| LOW | …)/organizations/[id]/settings/private-content/page.tsx | 7 | export default function OrganizationPrivateContentPage() { | CODE |
| LOW | …ges)/organizations/[id]/settings/(sections)/layout.tsx | 6 | export default function OrganizationSettingsSectionsLayout({ | CODE |
| LOW | …pages)/organizations/[id]/settings/(sections)/page.tsx | 5 | export default function OrganizationGeneralSettingsPage() { | CODE |
| LOW | …anizations/[id]/settings/(sections)/providers/page.tsx | 5 | export default function OrganizationProvidersSettingsPage() { | CODE |
| LOW | …zations/[id]/settings/(sections)/privacy-data/page.tsx | 5 | export default function OrganizationPrivacyDataSettingsPage() { | CODE |
| LOW | …p/(pages)/organizations/[id]/settings/members/page.tsx | 7 | export default function OrganizationMembersSettingsPage() { | CODE |
| LOW | frontend/src/app/(pages)/settings/settingsStyles.ts | 6 | export function settingsTabButtonClassName(active: boolean) { | CODE |
| LOW | …ontend/src/app/(pages)/settings/organizations/page.tsx | 5 | export default function OrganizationsSettingsPage() { | CODE |
| LOW | …tend/src/app/(pages)/settings/connectors/page.test.tsx | 153 | async function reachAuthStepAndFirstPoll() { | CODE |
| LOW | frontend/src/app/(pages)/settings/connectors/page.tsx | 231 | function connectorPlaceholderClassName(connector: McpConnectorSummary) { | CODE |
| LOW | frontend/src/app/(pages)/settings/security/page.tsx | 87 | function isDuplicateFriendlyNameError(error: unknown) { | CODE |
| LOW | frontend/src/app/(pages)/settings/security/page.tsx | 330 | async function returnToSetupInstructions() { | CODE |
| LOW | frontend/src/app/(pages)/settings/security/page.tsx | 435 | async function handleLoginPreferenceToggle() { | CODE |
| LOW | frontend/src/app/(pages)/settings/models/page.tsx | 369 | function ReasoningPreferenceDropdown({ | CODE |
| LOW | …ntend/src/app/(pages)/projects/[id]/assistant/page.tsx | 120 | function requestDeleteSelectedChats() { | CODE |
| LOW | …src/app/(pages)/projects/[id]/tabular-reviews/page.tsx | 42 | export default function ProjectTabularReviewsPage({ params }: Props) { | CODE |
| LOW | …src/app/(pages)/workflows/tabular-review/[id]/page.tsx | 10 | export default function TabularReviewWorkflowPage({ params }: Props) { | CODE |
| LOW | …/(pages)/library/templates/folders/[folderId]/page.tsx | 10 | export default function LibraryTemplateFolderPage({ params }: Props) { | CODE |
| LOW | …/library/templates/folders/[folderId]/presets/page.tsx | 10 | export default function LibraryTemplateFolderPresetsPage({ params }: Props) { | CODE |
| LOW | …end/src/app/(pages)/library/templates/presets/page.tsx | 5 | export default function LibraryPresetTemplatesPage() { | CODE |
| LOW | frontend/src/app/(pages)/tabular-reviews/page.tsx | 60 | function TabularReviewsWorkspacePage({ workspace }: { workspace?: string }) { | CODE |
| LOW | frontend/src/app/(pages)/tabular-reviews/page.tsx | 174 | function handleProjectFilterChange(value: string | null) { | CODE |
| LOW | frontend/src/app/components/assistant/EditCard.tsx | 21 | export function applyOptimisticResolution( | CODE |
| LOW | …end/src/app/components/assistant/QuickActionsModal.tsx | 34 | function QuickActionsModalForWorkspace({ | CODE |
| LOW | frontend/src/app/components/assistant/ModelToggle.tsx | 31 | export function mergeConfiguredModelOptions( | CODE |
| LOW | …/app/components/assistant/useAssistantDocumentPanel.ts | 56 | export function useAssistantDocumentPanel() { | CODE |
| LOW | …pp/components/assistant/AssistantDocumentPanelHost.tsx | 24 | export function AssistantDocumentPanelHost({ | CODE |
| LOW | …nd/src/app/components/assistant/AssistantSidePanel.tsx | 63 | export function mergeAssistantSidePanelTab( | CODE |
| LOW | …nd/src/app/components/assistant/AssistantSidePanel.tsx | 94 | export function upsertAssistantSidePanelTab( | CODE |
| LOW | …nd/src/app/components/assistant/AssistantSidePanel.tsx | 112 | export function reorderAssistantSidePanelTabs( | CODE |
| LOW | …nd/src/app/components/assistant/AssistantSidePanel.tsx | 197 | export function maxAssistantSidePanelWidth( | CODE |
| LOW | …nd/src/app/components/assistant/AssistantSidePanel.tsx | 208 | export function defaultAssistantSidePanelWidth( | CODE |
| LOW | …d/src/app/components/assistant/panelDocumentVersion.ts | 44 | export async function resolvePanelDocumentVersionResult( | CODE |
| LOW | …/components/assistant/message/citationVerification.tsx | 25 | export function citationVerificationState( | CODE |
| LOW⚡ | …/components/assistant/message/citationVerification.tsx | 37 | export function citationVerificationPillClassName(citation: Citation): string { | CODE |
| LOW⚡ | …/components/assistant/message/citationVerification.tsx | 43 | export function citationVerificationDescription( | CODE |
| LOW⚡ | …/components/assistant/message/citationVerification.tsx | 50 | export function citationVerificationAriaLabel(citation: Citation): string { | CODE |
| LOW⚡ | …/components/assistant/message/citationVerification.tsx | 57 | export function CitationVerificationBadge({ | CODE |
| LOW | …mponents/organizations/OrganizationGeneralSettings.tsx | 61 | export function OrganizationGeneralSettings() { | CODE |
| LOW | …onents/organizations/OrganizationProvidersSettings.tsx | 20 | export function OrganizationProvidersSettings() { | CODE |
| LOW | …rc/app/components/organizations/OrganizationModals.tsx | 235 | export function InviteOrganizationMemberModal({ | CODE |
| LOW | …components/organizations/OrganizationSettingsShell.tsx | 82 | export function OrganizationSettingsProvider({ | CODE |
| LOW | …components/organizations/OrganizationSettingsShell.tsx | 185 | export function OrganizationSettingsFrame({ | CODE |
| LOW | …mponents/organizations/OrganizationDepartedMembers.tsx | 203 | export function OrganizationDepartedMembers({ | CODE |
| LOW | frontend/src/app/components/ui/markdown-editor.tsx | 431 | function rememberTableInsertionSelection() { | CODE |
| LOW | …/src/app/components/settings/PersonalisationFields.tsx | 52 | export function personalisationInitialValues(profile: { | CODE |
| LOW | …src/app/components/settings/CourtListenerConnector.tsx | 43 | export function useCourtListenerConnector(workspace?: string) { | CODE |
| LOW | …/app/components/settings/CustomInstructionsSection.tsx | 28 | export function CustomInstructionsSection() { | CODE |
| LOW | …/components/settings/SettingsPersonalisationFields.tsx | 10 | export function SettingsPersonalisationFields({ | CODE |
| LOW | …ontend/src/app/components/projects/NewProjectModal.tsx | 182 | async function createProjectFromDocuments() { | CODE |
| LOW | …ntend/src/app/components/projects/ProjectPageParts.tsx | 567 | function hasFilenameExtensionChange(previous: string, next: string) { | CODE |
| LOW | …ntend/src/app/components/projects/ProjectsOverview.tsx | 279 | function handlePracticeFilterChange(value: string | null) { | CODE |
| LOW | …ntend/src/app/components/projects/ProjectWorkspace.tsx | 155 | function activeSectionFromSegments( | CODE |
| LOW | …/src/app/components/projects/ProjectAssistantTable.tsx | 163 | function handleCreatorFilterChange(value: string | null) { | CODE |
| LOW | …/src/app/components/projects/ProjectAssistantTable.tsx | 433 | function ProjectAssistantLoadingRows() { | CODE |
| LOW | frontend/src/app/components/tabular/NewTRModal.test.tsx | 438 | async function attachFileOnDocumentsStep(filename: string) { | CODE |
| LOW | frontend/src/app/components/tabular/TabularCell.tsx | 240 | function handleCitationClickInOverlay( | CODE |
| LOW | …c/app/components/tabular/TabularReviewDetailsModal.tsx | 23 | export function TabularReviewDetailsModal({ | CODE |
| 477 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …(pages)/projects/[id]/assistant/chat/[chatId]/page.tsx | 413 | // ── Tabs ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …(pages)/projects/[id]/assistant/chat/[chatId]/page.tsx | 483 | // ── Handlers ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …(pages)/projects/[id]/assistant/chat/[chatId]/page.tsx | 669 | // ── Upload ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …(pages)/projects/[id]/assistant/chat/[chatId]/page.tsx | 921 | // ── Folder handlers ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …(pages)/projects/[id]/assistant/chat/[chatId]/page.tsx | 1183 | // ── Resize handlers ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ntend/src/app/components/projects/ProjectChatPanel.tsx | 559 | // ── Chat actions ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/app/components/documents/DocTable.tsx | 1094 | // ── Folder handlers ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/app/components/documents/DocTable.tsx | 1321 | // ── Doc/chat/review handlers ────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/app/components/documents/DocTable.tsx | 1579 | // ── Drag & drop ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/app/components/documents/DocTable.tsx | 2246 | // ── Tree rendering ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/app/components/documents/DocTable.tsx | 3311 | // ── Loading skeleton ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …end/src/__tests__/integration/workflows.routes.test.ts | 133 | // ── GET /workflows (overview) ───────────────────────────────────────── | COMMENT |
| MEDIUM | …end/src/__tests__/integration/workflows.routes.test.ts | 262 | // ── GET /workflows/system ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …end/src/__tests__/integration/workflows.routes.test.ts | 328 | // ── GET /workflows/ids (select-all-matching support) ────────────────── | COMMENT |
| MEDIUM | …end/src/__tests__/integration/workflows.routes.test.ts | 438 | // ── Organization workflows ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …end/src/__tests__/integration/workflows.routes.test.ts | 671 | // ── organization overrides are written as ONE statement ───────────── | COMMENT |
| MEDIUM | …end/src/__tests__/integration/workflows.routes.test.ts | 926 | // ── POST /workflows/:workflowId/assets/from-documents ───────────────── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 211 | // ── GET /projects (overview) ────────────────────────────────────────── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 466 | // ── directory search vs. the deny override ───────────────────────── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 740 | // ── GET /projects/ids (select-all-matching support) ────────────────── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 778 | // ── Active workspace ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 1238 | // ── POST /projects (create) ─────────────────────────────────────────── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 1381 | // ── GET /projects/:projectId (detail, shared access helper) ─────────── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 1508 | // ── GET /projects/:projectId/people ───────────────────────────────── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 1604 | // ── DELETE /projects/:projectId/folders/:folderId (role ladder) ────── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 1662 | // ── POST /projects/:projectId/folders (404 vs 403) ─────────────────── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 1700 | // ── GET /projects/:projectId/chats ──────────────────────────────────── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 1825 | // ── GET /projects/:projectId/documents (checkProjectAccess guard) ───── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 1855 | // ── PATCH /projects/:projectId ─────────────────────────────────────── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 1882 | // ── DELETE /projects/:projectId ─────────────────────────────────────── | COMMENT |
| MEDIUM | …kend/src/__tests__/integration/projects.routes.test.ts | 1968 | // ── GET /projects/:projectId/export (tamper-evident manifest) ───────── | COMMENT |
| MEDIUM | backend/src/__tests__/integration/user.routes.test.ts | 503 | // ── GET /user/profile (MFA bootstrap path) ──────────────────────────── | COMMENT |
| MEDIUM | backend/src/__tests__/integration/user.routes.test.ts | 729 | // ── PATCH /user/profile (appearance preference) ─────────────────────── | COMMENT |
| MEDIUM | backend/src/__tests__/integration/user.routes.test.ts | 852 | // ── POST /user/profile (bootstrap upsert) ───────────────────────────── | COMMENT |
| MEDIUM | backend/src/__tests__/integration/user.routes.test.ts | 1025 | // ── GET /user/api-keys (presence without plaintext) ─────────────────── | COMMENT |
| MEDIUM | backend/src/__tests__/integration/user.routes.test.ts | 1075 | // ── PUT /user/api-keys/:provider (crypto + MFA guard) ───────────────── | COMMENT |
| MEDIUM | backend/src/__tests__/integration/user.routes.test.ts | 1748 | // ── Data export endpoint (MFA-guarded) ───────────────────────────────── | COMMENT |
| MEDIUM | backend/src/__tests__/integration/user.routes.test.ts | 1815 | // ── Data deletion endpoints (MFA-guarded, cleanup helpers) ──────────── | COMMENT |
| MEDIUM | backend/src/__tests__/integration/user.routes.test.ts | 2133 | // ── GET /user/mcp-connectors/oauth/callback (popup hand-off page) ───── | COMMENT |
| MEDIUM | backend/src/__tests__/integration/user.routes.test.ts | 2204 | // ── PATCH /user/security/mfa-login (factor-gated, MFA-guarded) ──────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 289 | // ── GET /tabular-review/creators ────────────────────────────────────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 326 | // ── GET /tabular-review (overview) ──────────────────────────────────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 442 | // ── POST /tabular-review (create) ───────────────────────────────────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 845 | // ── GET /tabular-review/:reviewId (detail) ──────────────────────────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 1044 | // ── PATCH /tabular-review/:reviewId ─────────────────────────────────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 1218 | // ── DELETE /tabular-review/:reviewId ────────────────────────────────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 1347 | // ── POST /tabular-review/:reviewId/clear-cells ──────────────────────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 1471 | // ── POST /tabular-review/:reviewId/regenerate-cell ──────────────────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 1706 | // ── the write gate ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 2015 | // ── server-owned generation: detach, resume, stop ───────────────────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 2336 | // ── POST /tabular-review/:reviewId/chat (streaming GUARDS only) ─────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 2586 | // ── server-owned review chat: detach, resume, stop ──────────────────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 3018 | // ── GET /tabular-review/:reviewId/chats ─────────────────────────────── | COMMENT |
| MEDIUM | …ckend/src/__tests__/integration/tabular.routes.test.ts | 3056 | // ── DELETE / PATCH /tabular-review/:reviewId/chats/:chatId ──────────── | COMMENT |
| MEDIUM | backend/src/modules/projects/projects.routes.ts | 601 | // ── Folder routes ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/stack.sh | 89 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/stack.sh | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/stack.sh | 133 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/stack.sh | 135 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/stack.sh | 271 | # --------------------------------------------------------------------------- | COMMENT |
| 19 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .gitleaks.toml | 1 | # gitleaks config for the Secret scan workflow (.github/workflows/gitleaks.yml). | COMMENT |
| LOW | docker-compose.yml | 1 | # MikeOSS — full local stack, one `docker compose up`. No external accounts. | COMMENT |
| LOW | docker-compose.yml | 61 | # Enterprise SAML is opt-in. Set these in the Compose environment/root | COMMENT |
| LOW | docker-compose.yml | 121 | retries: 20 | COMMENT |
| LOW | docker-compose.yml | 321 | condition: service_completed_successfully | COMMENT |
| LOW | docker-compose.yml | 341 | # env_file: | COMMENT |
| LOW | docker/db-init/adopt-ledger.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | frontend/tsconfig.build.json | 1 | { | COMMENT |
| LOW | frontend/vitest.setup.ts | 1 | import "@testing-library/jest-dom/vitest"; | COMMENT |
| LOW | frontend/src/app/contexts/UserProfileContext.tsx | 221 | COMMENT | |
| LOW | frontend/src/app/contexts/ChatHistoryContext.tsx | 301 | ? { org_id: workspaceOrgId } | COMMENT |
| LOW | frontend/src/app/(pages)/settings/connectors/page.tsx | 801 | } | COMMENT |
| LOW | …jects/[id]/assistant/chat/[chatId]/page.roles.test.tsx | 1 | import { describe, expect, it, vi, beforeEach } from "vitest"; | COMMENT |
| LOW | …end/src/app/components/assistant/AssistantChatPane.tsx | 101 | // load, which used to read "Viewing only — sending needs edit access" at | COMMENT |
| LOW | …d/src/app/components/assistant/panelDocumentVersion.ts | 81 | // visible when a document was missing. Every caller now has a reason to give, | COMMENT |
| LOW | …components/organizations/OrganizationSettingsShell.tsx | 21 | import { useItemWorkspace } from "@/app/hooks/useItemWorkspace"; | COMMENT |
| LOW | …ontend/src/app/components/projects/NewProjectModal.tsx | 81 | const [pendingProject, setPendingProject] = useState<Project | null>(null); | COMMENT |
| LOW | …ntend/src/app/components/projects/ProjectChatPanel.tsx | 321 | COMMENT | |
| LOW | …ntend/src/app/components/tabular/TabularReviewView.tsx | 221 | const stopRequestedRef = useRef(false); | COMMENT |
| LOW | …ntend/src/app/components/tabular/TabularReviewView.tsx | 421 | -1, | COMMENT |
| LOW | …ntend/src/app/components/tabular/TabularReviewView.tsx | 821 | action: "show a generated cell", | COMMENT |
| LOW | …nd/src/app/components/workflows/WorkflowDetailPage.tsx | 781 | email: share.shared_with_email, | COMMENT |
| LOW | frontend/src/shared/ui/dropdown.tsx | 21 | // never hidden behind its host. A caller can still pass its own `z-*` class. | COMMENT |
| LOW | frontend/src/shared/lib/modelCatalog.ts | 1 | // The model catalog both clients build their pickers from: the web app (via | COMMENT |
| LOW | frontend/src/__tests__/architecture.test.ts | 1 | // Architecture fitness test — the frontend's build-boundary rules, executable. | COMMENT |
| LOW | desktop/scripts/fetch-local-stack.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | desktop/src/main.js | 201 | // callback); all http(s) hops must stay in the popup so window.opener | COMMENT |
| LOW | desktop/src/main.js | 241 | void resolveForeignNavigation(url, win.webContents); | COMMENT |
| LOW | desktop/src/local/supervisor.js | 1 | // The local stack supervisor — docker-compose reimplemented as a process | COMMENT |
| LOW | desktop/src/local/upgrade.test.js | 1 | // The desktop counterpart of .github/workflows/schema-drift.yml, run through | COMMENT |
| LOW | desktop/src/local/sql.js | 1 | // Applying a SQL file through the pure-JS `pg` client. | COMMENT |
| LOW | desktop/src/local/secrets.js | 1 | // Per-install secrets for the local stack, minted once on first run. | COMMENT |
| LOW | backend/tsconfig.test.json | 1 | // Type-checks the test suites, which the build tsconfig deliberately excludes | COMMENT |
| LOW | backend/supabase/config.toml | 1 | # For detailed configuration reference documentation, visit: | COMMENT |
| LOW | backend/supabase/config.toml | 21 | # without explicit GRANTs. When unset, new entities are NOT auto-exposed, matching the new cloud | COMMENT |
| LOW | backend/supabase/config.toml | 121 | # [storage.buckets.images] | COMMENT |
| LOW | backend/supabase/config.toml | 161 | # external_url = "" | COMMENT |
| LOW | backend/supabase/config.toml | 181 | # Allow/disallow anonymous sign-ins to your project. | COMMENT |
| LOW | backend/supabase/config.toml | 201 | [auth.rate_limit] | COMMENT |
| LOW | backend/supabase/config.toml | 261 | COMMENT | |
| LOW | backend/supabase/config.toml | 281 | # inactivity_timeout = "8h" | COMMENT |
| LOW | backend/supabase/config.toml | 321 | # enroll_enabled = true | COMMENT |
| LOW | backend/supabase/config.toml | 421 | # Configures AWS_SECRET_ACCESS_KEY for S3 bucket | COMMENT |
| LOW | backend/scripts/migrate.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | backend/scripts/migrate.sh | 21 | # a file applied by hand (for example in the SQL editor). | COMMENT |
| LOW | backend/src/workerRuntime.ts | 1 | // Everything that processes background work, bundled behind one start/stop | COMMENT |
| LOW | backend/src/worker.ts | 1 | // Standalone worker entrypoint — run background workers as their own | COMMENT |
| LOW | backend/src/middleware/asyncRoute.ts | 1 | // Shared plumbing for async Express handlers. | COMMENT |
| LOW | backend/src/middleware/asyncRoute.ts | 41 | // Its only job is to attribute the failure to a router in the logs; the | COMMENT |
| LOW | backend/src/__tests__/workerEntrypoint.test.ts | 1 | import { describe, it, expect } from "vitest"; | COMMENT |
| LOW | backend/src/__tests__/schemaOrder.test.ts | 1 | import { readFileSync } from "node:fs"; | COMMENT |
| LOW | backend/src/__tests__/lifecycleGate.test.ts | 1 | import { describe, it, expect, afterEach } from "vitest"; | COMMENT |
| LOW | …kend/src/__tests__/orgAccessFollowup.migration.test.ts | 1 | import { describe, it, expect } from "vitest"; | COMMENT |
| LOW | backend/src/__tests__/architecture.test.ts | 1 | // Architecture fitness test — the backend's layering rules, executable. | COMMENT |
| LOW | backend/src/__tests__/architecture.test.ts | 21 | // visible and can only shrink (a ratchet). | COMMENT |
| LOW | …/src/__tests__/integration/asyncExports.routes.test.ts | 1 | import { describe, it, expect, vi, beforeEach } from "vitest"; | COMMENT |
| LOW | …ckend/src/__tests__/integration/stack.supabase.test.ts | 1 | import { randomUUID } from "node:crypto"; | COMMENT |
| LOW | backend/src/__tests__/integration/orgs.routes.test.ts | 1 | import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; | COMMENT |
| LOW | …end/src/__tests__/integration/workflows.routes.test.ts | 21 | // --------------------------------------------------------------------------- | COMMENT |
| LOW | …__/integration/projects.directorySearch.routes.test.ts | 1 | import { describe, it, expect, vi, beforeEach } from "vitest"; | COMMENT |
| 117 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/src/app/signup/page.test.tsx | 99 | "placeholder", | CODE |
| LOW | …src/app/components/assistant/ChatView.actions.test.tsx | 98 | useAuth: () => ({ user: { id: "user-1", email: "user@example.com" } }), | CODE |
| LOW | …ntend/src/app/components/settings/ApiKeyField.test.tsx | 55 | expect(input).not.toHaveAttribute("placeholder"); | CODE |
| LOW | …/src/app/components/projects/ProjectWorkspace.test.tsx | 27 | useAuth: () => ({ user: { id: "user-1", email: "user@example.com" } }), | CODE |
| LOW | …p/components/projects/ProjectWorkspace.errors.test.tsx | 31 | useAuth: () => ({ user: { id: "user-1", email: "user@example.com" } }), | CODE |
| LOW | …c/app/components/workflows/OpenSourceWorkflowModal.tsx | 237 | placeholder="Jane Doe" | CODE |
| LOW | …ponents/workflows/WorkflowDetailPage.recovery.test.tsx | 29 | useAuth: () => ({ user: { id: "user-1", email: "user@example.com" } }), | CODE |
| LOW | …src/app/components/playbooks/PlaybookRuleForm.test.tsx | 110 | expect(screen.getByLabelText(label)).not.toHaveAttribute("placeholder"); | CODE |
| LOW | …d/src/app/components/playbooks/PlaybookEditor.test.tsx | 190 | expect(input).toHaveAttribute("placeholder", "Untitled rule"); | CODE |
| LOW | frontend/src/app/login/page.test.tsx | 88 | "placeholder", | CODE |
| LOW | frontend/src/shared/lib/diagnosticVocabulary.test.ts | 13 | expect(diagnosticEvent({ tags: { operation: "Jane Doe's file.pdf", filename: "private.pdf" }, request: { data: " | CODE |
| LOW | …src/__tests__/integration/documentsFile.routes.test.ts | 41 | res.locals.userEmail = "user@example.com"; | CODE |
| LOW | …s__/integration/orgDepartureRetention.postgres.test.ts | 248 | sql(`insert into public.user_profiles(user_id,display_name,email) values (${q(2)},'Jane Doe','departing@example. | CODE |
| LOW | …s__/integration/orgDepartureRetention.postgres.test.ts | 260 | { kind: "chat", item_id: uid(64), title: "Standalone", former_user_id: uid(2), former_display_name: "Jane Do | CODE |
| LOW | backend/src/__tests__/integration/memory.routes.test.ts | 30 | res.locals.userEmail = "user@example.com"; | CODE |
| LOW | …rc/__tests__/integration/storageAdapter.routes.test.ts | 67 | res.locals.userEmail = "user@example.com"; | CODE |
| LOW | backend/src/lib/pdfText.test.ts | 476 | withPdf([[]], [[{ fieldName: "Name", fieldValue: "Jane Doe" }]]); | CODE |
| LOW | …end/src/lib/observability/sentryPrivacy.canary.test.ts | 14 | const CANARIES = ['Jane_Doe_NDA.pdf', 'Jane Doe', 'jane@acme-law.example', 'documents/u1/d1/source.pdf', 'Acme Corp v. D | CODE |
| LOW | …end/src/lib/observability/sentryPrivacy.canary.test.ts | 44 | const cause = Object.assign(new Error('AccessDenied for documents/u1/d1/source.pdf uploaded by jane@acme-law.example') | CODE |
| LOW | …end/src/lib/observability/sentryPrivacy.canary.test.ts | 80 | diagnosticEvent({ tags: { component: 'word-office', operation: 'word.edit_apply', stage: 'apply', office_code: 'Item | CODE |
| LOW | backend/src/lib/__tests__/userLookup.test.ts | 101 | expect(normalizeEmail(" User@Example.COM ")).toBe("user@example.com"); | CODE |
| LOW⚡ | backend/src/modules/chat/__tests__/chat.leave.test.ts | 50 | ], "user@example.com"); | CODE |
| LOW⚡ | backend/src/modules/chat/__tests__/chat.leave.test.ts | 56 | await withChatLeaveAccess(db, Array.from({ length: 201 }, (_, i) => ({ id: String(i), project_id: null, access_r | CODE |
| LOW⚡ | backend/src/modules/chat/__tests__/chat.leave.test.ts | 62 | expect(await withChatLeaveAccess(db, [{ id: "c", project_id: null, access_role: "viewer" }], "user@example.com") | CODE |
| LOW | …c/modules/projects/__tests__/projects.overview.test.ts | 23 | p_user_email: "user@example.com", | CODE |
| LOW | …c/modules/projects/__tests__/projects.overview.test.ts | 70 | p_user_email: "user@example.com", | CODE |
| LOW | …src/modules/tabular/__tests__/tabular.overview.test.ts | 22 | p_user_email: "user@example.com", | CODE |
| LOW | …src/modules/tabular/__tests__/tabular.overview.test.ts | 67 | p_user_email: "user@example.com", | CODE |
| LOW | …/src/modules/tabular/__tests__/tabular.history.test.ts | 22 | p_user_id: "u1", p_user_email: "user@example.com", p_review_ids: ["r1"], | CODE |
| LOW | …modules/workflows/__tests__/workflows.overview.test.ts | 25 | p_user_email: "user@example.com", | CODE |
| LOW | …modules/workflows/__tests__/workflows.overview.test.ts | 78 | p_user_email: "user@example.com", | CODE |
| LOW | …d/src/modules/uploads/__tests__/uploads.access.test.ts | 85 | "user@example.com", | CODE |
| LOW | …d/src/modules/uploads/__tests__/uploads.access.test.ts | 103 | "user@example.com", | CODE |
| LOW | …d/src/modules/uploads/__tests__/uploads.access.test.ts | 127 | "user@example.com", | CODE |
| LOW | …d/src/modules/uploads/__tests__/uploads.access.test.ts | 155 | "user@example.com", | CODE |
| LOW | backend/src/modules/orgs/orgs.retention.test.ts | 68 | former_user_id: "jane", former_display_name: "Jane Doe", former_email: "jane@example.test", | CODE |
| LOW⚡ | backend/src/modules/orgs/orgs.retention.test.ts | 95 | ["Jane Doe", "2026-10-01T00:00:00+00:00", "2026-10-31T00:00:00+00:00", 2], | CODE |
| LOW⚡ | backend/src/modules/orgs/orgs.retention.test.ts | 96 | ["Jane Doe", "2026-10-05T00:00:00+00:00", "2026-11-04T00:00:00+00:00", 1], | CODE |
| LOW⚡ | backend/src/modules/orgs/orgs.retention.test.ts | 103 | expect(result.data.departures[0].member).toEqual({ user_id: "jane", display_name: "Jane Doe", email: "jane@examp | CODE |
| LOW | word-addin/e2e/auth.spec.ts | 79 | await expect(email).not.toHaveAttribute("placeholder"); | CODE |
| LOW | word-addin/e2e/auth.spec.ts | 83 | await expect(password).not.toHaveAttribute("placeholder"); | CODE |
| LOW⚡ | word-addin/e2e/replace-all.spec.ts | 21 | "Acme Corp", | CODE |
| LOW⚡ | word-addin/e2e/replace-all.spec.ts | 22 | "Acme Ltd", | CODE |
| LOW⚡ | word-addin/e2e/replace-all.spec.ts | 27 | const WRITE = { text: "Acme Ltd", location: "After", original: "Acme Corp" }; | CODE |
| LOW | word-addin/e2e/replace-all.spec.ts | 84 | original_text: "Acme Corp", | CODE |
| LOW | word-addin/e2e/replace-all.spec.ts | 85 | replacement_text: "Acme Ltd", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …tend/src/app/components/shared/views/highlightQuote.ts | 19 | // Strip everything except alphanumerics (a-z A-Z 0-9) for robust matching | COMMENT |
| MEDIUM | backend/scripts/test-stack.sh | 5 | # mocks. They are the harness you re-run on every Supabase image bump to prove | COMMENT |
| MEDIUM | .github/workflows/stack-tests.yml | 47 | # deliberately (this is also the harness you re-run on image bumps). | COMMENT |
| MEDIUM | .github/workflows/mutation.yml | 12 | # original header guessed). That promotion is held back because the harness | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 6 | # regresses — the `--if-present` escape hatches from the pre-harness era are | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 102 | # pre-harness fallback: if "test:coverage" were ever renamed or | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 105 | # harness landed, so the fallback buys nothing but that silence — it | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/src/modules/tabular/tabular.routes.ts | 950 | // POST /tabular-review/:reviewId/chat — agentic streaming | COMMENT |
| MEDIUM | backend/src/modules/tabular/tabular.chats.ts | 4 | // and building the system + history messages the agentic review chat streams | COMMENT |
| MEDIUM | .github/workflows/word-addin.yml | 116 | # orchestration: its webServer command runs `build:e2e` (typecheck + | COMMENT |
| MEDIUM | .github/workflows/e2e.yml | 246 | # (the app targets a hosted Supabase project), so we scaffold one with | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/scripts/migrate.sh | 6 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | word-addin/e2e/conflicted-retry.spec.ts | 97 | // Step 1: the occupying revision was accepted (and only it)… | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | word-addin/e2e/conflicted-retry.spec.ts | 97 | // Step 1: the occupying revision was accepted (and only it)… | COMMENT |