Official front-end implementation of ComfyUI
This report summarizes scanner evidence for Comfy-Org/ComfyUI_frontend, a TypeScript project with 2,110 GitHub stars. SynthScan examined 2,062,181 lines of code across 7574 source files, recording 1912 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 1.1 (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? 1624 finding(s).
Are imports declared and package/API names verified? 252 finding(s).
Are wrappers, guards, and repeated structures necessary? 1463 finding(s).
Which changes need focused human review? 1912 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 1912 distinct pattern matches across 18 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 | tools/oxlint-plugins/watchEffectRendering.ts | 139 | function runsDirectlyInWatchEffect( | CODE |
| LOW | tools/oxlint-plugins/restrictedSyntax.ts | 157 | function reportsSelectionStoreWrite(node: MemberExpression): boolean { | CODE |
| LOW | tools/oxlint-plugins/serverFacts.ts | 406 | function isDisabledWithoutCapability( | CODE |
| LOW | tools/oxlint-plugins/comfyIngestTypes.ts | 215 | function keysOmittedThenRedeclared( | CODE |
| LOW | tools/oxlint-plugins/comfyIngestTypes.ts | 243 | function missingAgentImportMessage(name: string): string { | CODE |
| LOW | tools/oxlint-plugins/globalPinia.ts | 234 | function resolveExistingLocalModule(specifier: string, importer: string) { | CODE |
| LOW | tools/oxlint-plugins/vitestCleanup.ts | 380 | function enclosingExecutionBoundaryIndex(ancestors: readonly Node[]): number { | CODE |
| LOW | tools/oxlint-plugins/vitestCleanup.ts | 438 | function runsDirectlyInVitestCallback( | CODE |
| LOW | tools/oxlint-plugins/vitestCleanup.ts | 544 | function runsFirstAmongBeforeEachHooks( | CODE |
| LOW | tools/oxlint-plugins/vitestCleanup.ts | 584 | function isRedundantMockInstanceCleanup( | CODE |
| LOW | tools/architecture/src/records.ts | 377 | export function loadArchitectureConfiguration( | CODE |
| LOW | tools/devtools/nodes/inputs.py | 63 | def node_with_optional_combo_input(self, optional_combo_input=None): | CODE |
| LOW | tools/devtools/nodes/inputs.py | 83 | def node_with_only_optional_input(self, clip=None, text=None): | CODE |
| LOW | tools/devtools/nodes/inputs.py | 349 | def node_with_pre_attach_legacy_widgets(self): | CODE |
| LOW | tools/devtools/nodes/inputs.py | 363 | def node_with_comparer_widget(self): | CODE |
| LOW | tools/devtools/nodes/inputs.py | 377 | def node_with_hidden_aria_dialog(self): | CODE |
| LOW | tools/devtools/web/legacyCompatibility.js | 140 | function installPreviewBridgeSetter(node) { | CODE |
| LOW | tools/test-recorder/src/featureFlags.ts | 81 | export function formatInitialFeatureFlags( | CODE |
| LOW | tools/test-recorder/src/checks/devServer.ts | 64 | export function differentCheckoutInstructions( | CODE |
| LOW | tools/test-recorder/src/devserver/manager.ts | 38 | function unverifiableReuseInstructions( | CODE |
| LOW | tools/test-recorder/src/recorder/template.ts | 65 | export function removeLegacyCustomStorageState(storageStateFile: string): void { | CODE |
| LOW | tools/test-recorder/src/recorder/template.ts | 231 | export function generateRecordingTemplate( | CODE |
| LOW | …s/published-package-build/src/publishedPackageBuild.ts | 70 | export function definePublishedPackageConfig({ | CODE |
| LOW | tools/expected-failures/src/inventory.ts | 112 | function importedPlaywrightRunners(node: ts.Node): string[] { | CODE |
| LOW | scripts/cloud-manifest.ts | 49 | export function validateSupportedNodesDoc(value: unknown): SupportedNodesDoc { | CODE |
| LOW | scripts/cloud-manifest.ts | 122 | export function sourceFromSupportedNodesHeader( | CODE |
| LOW | scripts/cloud-manifest.ts | 146 | export function validateObjectInfoSnapshot(value: unknown): ObjectInfoSnapshot { | CODE |
| LOW | scripts/cloud-manifest.ts | 186 | export function validateCuratedCloudOverlay( | CODE |
| LOW | scripts/cloud-manifest.ts | 308 | export function validateCloudExtensionSentinels( | CODE |
| LOW | scripts/cloud-manifest.ts | 335 | export function validateCloudCannotRunAlone( | CODE |
| LOW | scripts/checkAssetsFlagArtifact.test.ts | 19 | ['function isWidgetAssetPickerEnabled() {\n return false;\n}'], | CODE |
| LOW | scripts/checkAssetsFlagArtifact.test.ts | 31 | ['function isWidgetAssetPickerEnabled(){return!1}'], | CODE |
| LOW | scripts/checkAssetsFlagArtifact.test.ts | 42 | 'function isWidgetAssetPickerEnabled() {\n return !useDeploymentPickStore().bootDeployment;\n}' | CODE |
| LOW⚡ | scripts/checkAssetsFlagArtifact.test.ts | 53 | 'function isWidgetAssetPickerEnabled(){return!useDeploymentPickStore().bootDeployment}' | CODE |
| LOW⚡ | scripts/checkAssetsFlagArtifact.test.ts | 61 | 'function isWidgetAssetPickerEnabled() {\n track();\n return true;\n}', | CODE |
| LOW⚡ | scripts/checkAssetsFlagArtifact.test.ts | 62 | 'function isWidgetAssetPickerEnabled() {\n return isCloud;\n}', | CODE |
| LOW⚡ | scripts/checkAssetsFlagArtifact.test.ts | 63 | 'function isWidgetAssetPickerEnabled(){return!0}', | CODE |
| LOW⚡ | scripts/checkAssetsFlagArtifact.test.ts | 64 | 'function isWidgetAssetPickerEnabled(){return useDeploymentPickStore().bootDeployment}' | CODE |
| LOW | scripts/checkAssetsFlagArtifact.test.ts | 75 | 'function isWidgetAssetPickerEnabled() {\n if (!api.getServerFeature("assets", false)) return false;\n return true | CODE |
| LOW | scripts/checkAssetsFlagArtifact.test.ts | 76 | 'function isWidgetAssetPickerEnabled() {\n if (false) return false;\n return true;\n}' | CODE |
| LOW | scripts/checkAssetsFlagArtifact.test.ts | 87 | 'function isWidgetAssetPickerEnabled() {\n if (!isCloud) return false;\n return true;\n}' | CODE |
| LOW | scripts/checkAssetsFlagArtifact.test.ts | 99 | ['function isWidgetAssetPickerEnabled() {\n return false;\n}'], | CODE |
| LOW⚡ | scripts/checkAssetsFlagArtifact.test.ts | 112 | const gate = 'function isWidgetAssetPickerEnabled() {\n return false;\n}' | CODE |
| LOW⚡ | scripts/checkAssetsFlagArtifact.test.ts | 122 | ['function isWidgetAssetPickerEnabled() {\n return false;\n}'], | CODE |
| LOW⚡ | scripts/checkAssetsFlagArtifact.test.ts | 132 | 'function isWidgetAssetPickerEnabled() {\n if (!isCloud) {\n return false\n }\n return true\n}' | CODE |
| LOW | scripts/checkAssetsFlagArtifact.test.ts | 150 | 'function isWidgetAssetPickerEnabled() {\n const label = "{unbalanced"\n return false\n}' | CODE |
| LOW | scripts/checkAssetsFlagArtifact.test.ts | 279 | 'function isWidgetAssetPickerEnabled() {\n return false;\n}' | CODE |
| LOW | scripts/checkAssetsFlagArtifact.test.ts | 304 | 'function isWidgetAssetPickerEnabled() {\n if (!isCloud) return false\n return true\n}' | CODE |
| LOW | scripts/customNodeQuarantine.ts | 96 | async function requirementsStillUnsatisfiable( | CODE |
| LOW | scripts/generate-embedded-metadata-test-files.py | 86 | def inject_exif_prefix_in_webp(path: str): | CODE |
| LOW | scripts/generate-embedded-metadata-test-files.py | 151 | def generate_corrupt_itxt_png(): | CODE |
| LOW | scripts/check-frozen-dirs.ts | 24 | function isFrozenImplementationFile(path: string): boolean { | CODE |
| LOW | scripts/customNodeQuarantineProbe.ts | 16 | export function provesRequirementIsUnsatisfiable( | CODE |
| LOW | scripts/checkAssetsFlagArtifact.ts | 98 | export function assertWidgetAssetPickerGate( | CODE |
| LOW | scripts/check-unused-i18n-keys.ts | 62 | function getNewKeysFromStagedFiles(stagedFiles: string[]): Set<string> { | CODE |
| LOW | scripts/check-follower-document-mutations.ts | 98 | function isFollowerDocApplyRemoteUpdate( | CODE |
| LOW | scripts/check-follower-document-mutations.ts | 391 | function shouldTrackBindingElement( | CODE |
| LOW | scripts/check-follower-document-mutations.ts | 419 | function instanceofSharedTypeDeclarations( | CODE |
| LOW | scripts/check-follower-document-mutations.ts | 531 | export function scanFollowerInvariantSource( | CODE |
| LOW | scripts/check-follower-document-mutations.ts | 541 | export function scanFollowerInvariantSources( | CODE |
| 1367 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | eslint.config.ts | 54 | 'placeholder', | CODE |
| LOW | eslint.config.ts | 77 | 'placeholder', | CODE |
| LOW | eslint.config.ts | 422 | 'placeholder', | CODE |
| LOW | tools/devtools/nodes/remote.py | 172 | "placeholder": "Choose foos", | CODE |
| LOW | packages/account-core/src/signInSchemas.test.ts | 17 | email: 'user@example.com', | CODE |
| LOW | …ccount-core/src/core/billing/telemetry/payload.test.ts | 343 | email: 'user@example.com', | CODE |
| LOW | packages/api-client/src/webSessionFetch.test.ts | 35 | user: { id: 'user', email: 'user@example.com', emailVerified: true }, | CODE |
| LOW | …count-ui/src/billing/checkout/CheckoutInviteEmails.vue | 43 | :aria-label="placeholder" | CODE |
| LOW | …stem/src/components/single-select/SingleSelect.test.ts | 139 | expect(searchInput).toHaveAttribute('placeholder', 'Rechercher...') | CODE |
| LOW | …system/src/components/search-input/SearchInput.test.ts | 30 | ).toHaveAttribute('placeholder', 'Rechercher...') | CODE |
| LOW | …system/src/components/search-input/SearchInput.test.ts | 47 | '<input :placeholder="placeholder" :value="modelValue" :autofocus="autoFocus || undefined" @input="$emit(\ | CODE |
| LOW | …system/src/components/search-input/SearchInput.test.ts | 48 | props: ['placeholder', 'modelValue', 'autoFocus'] | CODE |
| LOW | …system/src/components/search-input/SearchInput.test.ts | 146 | describe('placeholder', () => { | CODE |
| LOW | …src/components/search-input/SearchAutocomplete.test.ts | 20 | ).toHaveAttribute('placeholder', 'Rechercher...') | CODE |
| LOW | apps/billing-web/src/locales/en/main.json | 30 | "placeholder": "Enter your email" | CODE |
| LOW | apps/billing-web/src/locales/en/main.json | 34 | "placeholder": "Enter your password", | CODE |
| LOW | apps/billing-web/src/locales/en/main.json | 472 | "placeholder": "Enter emails separated by commas", | CODE |
| LOW | browser_tests/tests/backgroundImageUpload.spec.ts | 39 | await expect(urlInput).toHaveAttribute('placeholder') | CODE |
| LOW | browser_tests/tests/useSettingSearch.spec.ts | 54 | 'placeholder', | CODE |
| LOW | …ons/vueNodes/widgets/components/WidgetMarkdown.test.ts | 374 | const longMarkdown = '# Heading\n' + 'Lorem ipsum '.repeat(1000) | CODE |
| LOW | …ons/vueNodes/widgets/components/WidgetTextarea.test.ts | 191 | expect(textarea.getAttribute('placeholder')).toBe('Custom placeholder') | CODE |
| LOW | src/composables/auth/useAuthActions.test.ts | 448 | signInWithEmail('user@example.com', 'password') | CODE |
| LOW | src/composables/auth/useAuthActions.test.ts | 466 | signUpWithEmail('user@example.com', 'password') | CODE |
| LOW | src/composables/auth/useAuthActions.test.ts | 763 | await expect(sendPasswordReset('user@example.com')).resolves.toBeUndefined() | CODE |
| LOW | src/locales/he/main.json | 190 | "placeholder": "תארו מה ברצונכם ליצור", | CODE |
| LOW | src/locales/he/main.json | 540 | "placeholder": "הזן את מפתח ה-API שלך", | CODE |
| LOW | src/locales/he/main.json | 1000 | "placeholder": "מציין מיקום לשאלות הסקר", | CODE |
| LOW | src/locales/he/main.json | 5688 | "placeholder": "בחר...", | CODE |
| LOW | src/locales/he/main.json | 5974 | "placeholder": "הגדרות לוח הבקרה של סביבת העבודה" | CODE |
| LOW | src/locales/he/main.json | 6011 | "placeholder": "הזן את כתובת הדוא\"ל של האדם", | CODE |
| LOW | src/locales/ja/main.json | 190 | "placeholder": "作成したいものを説明してください", | CODE |
| LOW | src/locales/ja/main.json | 540 | "placeholder": "APIキーを入力してください", | CODE |
| LOW | src/locales/ja/main.json | 1000 | "placeholder": "アンケート質問のプレースホルダー", | CODE |
| LOW | src/locales/ja/main.json | 5688 | "placeholder": "選択...", | CODE |
| LOW | src/locales/ja/main.json | 5974 | "placeholder": "ダッシュボードのワークスペース設定" | CODE |
| LOW | src/locales/ja/main.json | 6011 | "placeholder": "招待する人のメールアドレスを入力", | CODE |
| LOW | src/locales/it/main.json | 190 | "placeholder": "Descrivi cosa vuoi creare", | CODE |
| LOW | src/locales/it/main.json | 540 | "placeholder": "Inserisci la tua chiave API", | CODE |
| LOW | src/locales/it/main.json | 1000 | "placeholder": "Segnaposto domande del sondaggio", | CODE |
| LOW | src/locales/it/main.json | 5688 | "placeholder": "Seleziona...", | CODE |
| LOW | src/locales/it/main.json | 5974 | "placeholder": "Impostazioni dashboard workspace" | CODE |
| LOW | src/locales/it/main.json | 6011 | "placeholder": "Inserisci email separate da virgole", | CODE |
| LOW | src/locales/ru/main.json | 190 | "placeholder": "Опишите, что хотите создать", | CODE |
| LOW | src/locales/ru/main.json | 540 | "placeholder": "Введите ваш API-ключ", | CODE |
| LOW | src/locales/ru/main.json | 1000 | "placeholder": "Вопросы для опроса", | CODE |
| LOW | src/locales/ru/main.json | 5688 | "placeholder": "Выбрать...", | CODE |
| LOW | src/locales/ru/main.json | 5974 | "placeholder": "Настройки рабочего пространства" | CODE |
| LOW | src/locales/ru/main.json | 6011 | "placeholder": "Введите email человека", | CODE |
| LOW | src/locales/zh/main.json | 190 | "placeholder": "描述你想创建的内容", | CODE |
| LOW | src/locales/zh/main.json | 540 | "placeholder": "请输入您的 API 密钥", | CODE |
| LOW | src/locales/zh/main.json | 1000 | "placeholder": "调查问题占位符", | CODE |
| LOW | src/locales/zh/main.json | 5688 | "placeholder": "请选择...", | CODE |
| LOW | src/locales/zh/main.json | 5974 | "placeholder": "仪表盘工作区设置" | CODE |
| LOW | src/locales/zh/main.json | 6011 | "placeholder": "输入对方邮箱", | CODE |
| LOW | src/locales/zh-TW/main.json | 190 | "placeholder": "描述您想要建立的內容", | CODE |
| LOW | src/locales/zh-TW/main.json | 540 | "placeholder": "請輸入您的 API 金鑰", | CODE |
| LOW | src/locales/zh-TW/main.json | 1000 | "placeholder": "問卷問題佔位符", | CODE |
| LOW | src/locales/zh-TW/main.json | 5688 | "placeholder": "選擇...", | CODE |
| LOW | src/locales/zh-TW/main.json | 5974 | "placeholder": "儀表板工作區設定" | CODE |
| LOW | src/locales/zh-TW/main.json | 6011 | "placeholder": "輸入對方的電子郵件", | CODE |
| 84 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .claude/commands/pr.md | 5 | ## Step 1: Check Prerequisites | COMMENT |
| LOW | .claude/commands/pr.md | 16 | ## Step 2: Push and Create PR | COMMENT |
| LOW | .claude/commands/pr.md | 98 | ## Step 3: Execute PR Creation | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 63 | ### Step 1: Environment Safety Check | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 84 | ### Step 2: Analyze Recent Changes | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 119 | ### Step 3: Breaking Change Analysis | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 134 | ### Step 4: Analyze Dependency Updates | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 180 | ### Step 5: Generate GTM Feature Summary | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 273 | ### Step 6: Version Preview | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 284 | ### Step 7: Security and Dependency Audit | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 303 | ### Step 8: Pre-Release Testing | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 324 | ### Step 9: Generate Comprehensive Release Notes | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 388 | ### Step 10: Create Version Bump PR | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 439 | ### Step 11: Critical Release PR Verification | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 455 | ### Step 12: Pre-Merge Validation | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 462 | ### Step 13: Execute Release | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 495 | ### Step 14: Enhance GitHub Release | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 525 | ### Step 15: Verify Multi-Channel Distribution | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 567 | ### Step 16: Post-Release Monitoring Setup | COMMENT |
| LOW | .claude/commands/create-frontend-release.md | 646 | ### Step 17: Create Release Summary | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 36 | ### Step 1: Try Automated Backports First | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 91 | ### Step 2: Identify Target Core Branch | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 103 | ### Step 3: Parse and Validate Arguments | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 116 | ### Step 4: Analyze Target Changes | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 127 | ### Step 5: Create Hotfix Branch | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 136 | ### Step 6: Cherry-pick Changes | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 151 | ### Step 7: Create PR to Core Branch | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 168 | ### Step 8: Wait for Tests | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 179 | ### Step 9: Merge Hotfix PR | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 187 | ### Step 10: Create Version Bump | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 199 | ### Step 11: Create Release PR | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 255 | ### Step 12: Monitor Release Process | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 270 | ### Step 13: Manually Publish Draft Release | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 285 | ### Step 14: Create ComfyUI Requirements.txt Update PR | COMMENT |
| LOW | .claude/commands/create-hotfix-release.md | 375 | ### Step 15: Post-Release Verification | COMMENT |
| LOW | .claude/commands/setup_repo.md | 14 | ## Step 1: Bootstrap Environment | COMMENT |
| LOW | .claude/commands/setup_repo.md | 28 | ## Step 2: Verify Build | COMMENT |
| LOW | .claude/commands/setup_repo.md | 43 | ## Step 3: Run Unit Tests | COMMENT |
| LOW | .claude/commands/setup_repo.md | 59 | ## Step 4: Verify Development Server | COMMENT |
| LOW | .claude/commands/setup_repo.md | 86 | ## Step 5: Final Verification | COMMENT |
| LOW | .claude/commands/add-missing-i18n.md | 5 | ### Step 1: Identify new translation keys | COMMENT |
| LOW | .claude/commands/add-missing-i18n.md | 9 | ### Step 2: Add translations to English locale file | COMMENT |
| LOW | .claude/commands/adr-compliance-audit.md | 5 | ## Step 1: Gather the Diff | COMMENT |
| LOW | .claude/commands/adr-compliance-audit.md | 10 | ## Step 2: Priority 1 — ECS and Command-Pattern Compliance | COMMENT |
| LOW | .claude/commands/adr-compliance-audit.md | 58 | ## Step 3: Priority 2 — General ADR Compliance | COMMENT |
| LOW | .claude/commands/adr-compliance-audit.md | 67 | ## Step 4: Generate Report | COMMENT |
| LOW | …aude/skills/backport-management/reference/execution.md | 9 | ## Step 0: Test-Then-Resolve Pre-Pass (Recommended) | COMMENT |
| LOW | …aude/skills/backport-management/reference/execution.md | 46 | ## Step 1: Label-Driven Automation (Batch) | COMMENT |
| LOW | …aude/skills/backport-management/reference/execution.md | 65 | ## Step 2: Wait for CI & Merge Clean Auto-PRs | COMMENT |
| LOW | …aude/skills/backport-management/reference/execution.md | 97 | ## Step 3: Manual Worktree for Conflicts | COMMENT |
| LOW | …aude/skills/backport-management/reference/execution.md | 183 | ## Step 4: Wave Verification | COMMENT |
| LOW | .claude/skills/perf-fix-with-proof/SKILL.md | 19 | ### Step 1: Create the test branch | COMMENT |
| LOW | .claude/skills/perf-fix-with-proof/SKILL.md | 25 | ### Step 2: Write the `@perf` test | COMMENT |
| LOW⚡ | .claude/skills/perf-fix-with-proof/SKILL.md | 67 | ### Step 3: Add test workflow asset (if needed) | COMMENT |
| LOW⚡ | .claude/skills/perf-fix-with-proof/SKILL.md | 71 | ### Step 4: Verify locally | COMMENT |
| LOW⚡ | .claude/skills/perf-fix-with-proof/SKILL.md | 79 | ### Step 5: Create PR1 (test-only) | COMMENT |
| LOW | .claude/skills/perf-fix-with-proof/SKILL.md | 100 | ### Step 6: Get PR1 merged | COMMENT |
| LOW | .claude/skills/perf-fix-with-proof/SKILL.md | 104 | ### Step 7: Create PR2 (fix) on top of main | COMMENT |
| LOW | .claude/skills/perf-fix-with-proof/SKILL.md | 116 | ### Step 8: Verify the improvement shows in CI | COMMENT |
| LOW | scripts/update-playwright-agents.sh | 11 | # Step 1: Regenerate base agent files | COMMENT |
| 21 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/ci-container/publish.test.ts | 101 | elif [[ -f "$STATE/image.json" ]]; then | CODE |
| HIGH⚡ | scripts/cicd/cloud-backport-tag.test.ts | 63 | elif limited=$((limited + 1)) && printf '%s' "$limited" > "$limited_file" && | CODE |
| HIGH⚡ | scripts/cicd/cloud-backport-tag.test.ts | 67 | elif [[ "$args" == *"compare/"* ]]; then | CODE |
| HIGH⚡ | scripts/cicd/cloud-backport-tag.test.ts | 69 | elif [[ "$args" == *"contents/package.json"* ]]; then | CODE |
| HIGH⚡ | scripts/cicd/cloud-backport-tag.test.ts | 71 | elif [[ "$args" == *"git/ref/heads/"* ]]; then | CODE |
| HIGH⚡ | scripts/cicd/cloud-backport-tag.test.ts | 73 | elif [[ "$args" == *"git/tags/"* ]]; then | CODE |
| HIGH⚡ | scripts/cicd/cloud-backport-tag.test.ts | 75 | elif [[ "$args" == *"git/ref/tags/"* ]]; then | CODE |
| HIGH | scripts/cicd/cloud-backport-tag.test.ts | 88 | elif [[ "$args" == *"--method POST"* ]]; then | CODE |
| HIGH | scripts/i18n/update-locales.ts | 236 | print( | CODE |
| HIGH⚡ | scripts/i18n/update-locales.ts | 381 | print( | CODE |
| HIGH⚡ | scripts/i18n/update-locales.ts | 388 | print( | CODE |
| HIGH⚡ | scripts/i18n/update-locales.ts | 395 | print(`${label}: ${formatTokenViolation(error)}`) | CODE |
| HIGH⚡ | scripts/i18n/update-locales.ts | 398 | print('All locales are up to date with the English sources.') | CODE |
| HIGH⚡ | scripts/i18n/update-locales.ts | 400 | print( | CODE |
| HIGH | scripts/i18n/update-locales.ts | 478 | print( | CODE |
| HIGH | scripts/i18n/update-locales.ts | 499 | print( | CODE |
| HIGH | scripts/i18n/update-locales.ts | 502 | print(`Source provenance: ${relative(repoRoot, manifestFile)}`) | CODE |
| HIGH | scripts/i18n/update-locales.ts | 546 | print( | CODE |
| HIGH | scripts/i18n/update-locales.ts | 614 | print(formatUsageSummary(usages, counter.requestCount())) | CODE |
| HIGH | packages/api-client/src/ComfyApi.ts | 108 | print(f"Auth token: {auth_token}") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/test-recorder/src/recorder/template.ts | 141 | // Signing in, exploring, and getting set up all stay off the record — | COMMENT |
| LOW | …aude/skills/backport-management/reference/execution.md | 121 | # For simple content conflicts, accept theirs: | COMMENT |
| LOW | scripts/release-sheriff/release-sheriff.ts | 261 | } | COMMENT |
| LOW | scripts/i18n/eslint-generated-messages.js | 1 | // The generated half of the lint catalog for no-missing-keys, shaped the way | COMMENT |
| LOW | packages/mask-editor/src/StrokeProcessor.test.ts | 41 | } | COMMENT |
| LOW | .github/workflows/pr-label-backport.yaml | 1 | --- | COMMENT |
| LOW | .github/workflows/ci-widget-form-census.yaml | 1 | # Manual measurement: how often can the widget form be derived, and does it | COMMENT |
| LOW | .github/workflows/release-weekly-comfyui.yaml | 1 | # Release workflow for ComfyUI frontend: version bump → PyPI publish → ComfyUI PR. | COMMENT |
| LOW | .github/workflows/ci-crdt-skew-alarm.yaml | 1 | # Description: Informational alarm for skew between the pinned | COMMENT |
| LOW | .github/workflows/multiplayer-pin-currency.yaml | 1 | # Checks how stale the @comfyorg/comfy-multi-player pin (root package.json) | COMMENT |
| LOW | .github/workflows/cloud-backport-tag.yaml | 1 | --- | COMMENT |
| LOW | .github/workflows/pr-assign-release-sheriff.yaml | 61 | # This job runs hourly, so a lasting breakage would otherwise post ~24 | COMMENT |
| LOW | .github/workflows/release-version-bump.yaml | 21 | default: 'main' | COMMENT |
| LOW | .github/workflows/ci-tests-custom-nodes.yaml | 1 | # Runs the custom-node regression suite against a backend that has the manifest | COMMENT |
| LOW | .github/workflows/update-corpus-pins.yaml | 1 | # Bump the ecosystem matrix's corpus pins. | COMMENT |
| LOW | .github/workflows/backport-auto-merge.yaml | 1 | --- | COMMENT |
| LOW | .github/workflows/backport-auto-merge.yaml | 21 | # performed by the default token does not emit events that trigger other | COMMENT |
| LOW | .github/workflows/cloud-release-version-bump.yaml | 1 | # Description: Cadenced patch bump for active cloud release branch(es). | COMMENT |
| LOW | .github/workflows/cloud-dispatch-build.yaml | 1 | --- | COMMENT |
| LOW | .github/workflows/release-slack-changelog.yaml | 1 | # Announces a published release in Slack: a two-sentence headline in the | COMMENT |
| LOW | .github/workflows/ci-ecosystem-matrix.yaml | 1 | # Required gate: on relevant PRs and relevant merge candidates, execute every | COMMENT |
| LOW | .github/workflows/ci-ecosystem-matrix.yaml | 141 | # A cache hit already carries the snapshot and exact corpus consumed by | COMMENT |
| LOW | .github/workflows/ci-ecosystem-matrix.yaml | 181 | COMMENT | |
| LOW | .github/workflows/ci-ecosystem-matrix.yaml | 361 | # make upload-artifact re-root the artifact at their common ancestor, | COMMENT |
| LOW | .github/actions/build-cloud-frontend/action.yaml | 21 | # A reserved origin the e2e suite stubs, so the hosted billing | COMMENT |
| LOW | .github/actions/changes-filter/action.yaml | 1 | # merge_group.base_sha can be the preceding queued candidate, excluding its | COMMENT |
| LOW | browser_tests/tests/performance.spec.ts | 421 | // No such culling exists in production source: GraphCanvas.vue mounts | COMMENT |
| LOW | browser_tests/tests/sidebar/assets3DCardDrag.spec.ts | 1 | import { expect } from '@playwright/test' | COMMENT |
| LOW | browser_tests/tests/sidebar/assets-filter.spec.ts | 1 | import { expect } from '@playwright/test' | COMMENT |
| LOW | browser_tests/tests/sidebar/assets-sort.spec.ts | 1 | import { expect } from '@playwright/test' | COMMENT |
| LOW | …wser_tests/tests/agent/agentDraftMatchesCanvas.spec.ts | 1 | import { expect } from '@playwright/test' | COMMENT |
| LOW | …wser_tests/tests/agent/agentDraftMatchesCanvas.spec.ts | 21 | // a `draft` snapshot of the target workflow, and that snapshot is the agent's | COMMENT |
| LOW | …ser_tests/tests/agent/agentPromptWidgetLinking.spec.ts | 1 | import { expect } from '@playwright/test' | COMMENT |
| LOW | …ser_tests/tests/agent/agentPromptWidgetLinking.spec.ts | 21 | // | COMMENT |
| LOW | …_tests/tests/agent/agentEscapeStopsClickedTurn.spec.ts | 1 | import { expect, mergeTests } from '@playwright/test' | COMMENT |
| LOW | browser_tests/tests/agent/agentRunModePopover.spec.ts | 81 | // carries the trigger through the whole closed → open → closed transition. | COMMENT |
| LOW | …r_tests/tests/agent/agentFirstTurnOnUnsavedTab.spec.ts | 21 | // Sources: regr-32 (PM-1429, PM-1430, PM-1432, PM-1433, PM-1634, PR 18278), | COMMENT |
| LOW | …s/tests/agent/agentMobileNewTabWorkflowBinding.spec.ts | 21 | // preference to the user's selection, or (2) a designed mint that only reads | COMMENT |
| LOW | …r_tests/tests/agent/agentJobReopenedAsWorkflow.spec.ts | 261 | // LIVE-DEFECT PIN — the final assertion is expected to fail on `main`. | COMMENT |
| LOW | …r_tests/tests/agent/agentJobReopenedAsWorkflow.spec.ts | 321 | COMMENT | |
| LOW | …/tests/agent/agentAttachmentHistoryPersistence.spec.ts | 21 | // final text). The real backend returns the resolved attachment on reload -- | COMMENT |
| LOW | …ts/tests/agent/agentApprovalSurvivesSocketDrop.spec.ts | 1 | import { expect } from '@playwright/test' | COMMENT |
| LOW | …ts/tests/agent/agentInsertWorkflowCanvasResult.spec.ts | 21 | COMMENT | |
| LOW | …owser_tests/tests/agent/agentTemplatePlacement.spec.ts | 21 | import { nextFrame } from '@e2e/fixtures/utils/timing' | COMMENT |
| LOW | …owser_tests/tests/agent/agentComposerAssetDrop.spec.ts | 241 | COMMENT | |
| LOW | …s/agent/agentAutogrowHandWiredLinkSurvivesSend.spec.ts | 101 | .toEqual(expectedImageInputs) | COMMENT |
| LOW | …s/agent/agentAutogrowHandWiredLinkSurvivesSend.spec.ts | 121 | // different gap that looked like the same symptom — a hand-wire's own | COMMENT |
| LOW | …r_tests/tests/agent/agentBatchOutputAttachment.spec.ts | 101 | await expect(bubble).toContainText('use this generation') | COMMENT |
| LOW | browser_tests/tests/customNodes/dynamicInputs.spec.ts | 21 | // | COMMENT |
| LOW | …ts/tests/workflow/promptSaveNeverSavedWorkflow.spec.ts | 1 | import { expect } from '@playwright/test' | COMMENT |
| LOW | …ts/tests/workflow/promptSaveNeverSavedWorkflow.spec.ts | 21 | // load starts on. That path already has non-regression coverage today | COMMENT |
| LOW | …bgraph/subgraphPromotedWidgetRewireDuplication.spec.ts | 1 | import { expect } from '@playwright/test' | COMMENT |
| LOW | …bgraph/subgraphPromotedWidgetRewireDuplication.spec.ts | 21 | // - Interior rewire: rebinding the link feeding the interior node *behind* | COMMENT |
| LOW | src/composables/node/useNodePricing.ts | 1 | // JSONata-based pricing badge evaluation for API nodes. | COMMENT |
| LOW | src/core/graph/widgets/dynamicWidgets.ts | 721 | //Whether the input-side `connect` event for `pendingConnection` has | COMMENT |
| LOW | src/platform/cloud/onboarding/onboardingCloudRoutes.ts | 1 | import type { RouteRecordRaw } from 'vue-router' | COMMENT |
| LOW | src/platform/telemetry/imageFailureDiagnostics.ts | 101 | // Our own status is the finding. Following a redirect would report the | COMMENT |
| LOW | src/platform/assets/mappings/modelNodeMappings.ts | 21 | */ | COMMENT |
| LOW | src/platform/assets/mappings/modelNodeMappings.ts | 141 | // Intentionally NOT mapped to the asset-picker. The cloud asset-ingestion | COMMENT |
| LOW | src/platform/billing/composables/usePlanEnded.ts | 21 | // truly ends the backend collapses max_seats to the no-plan default of 1 | COMMENT |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …aude/skills/backport-management/reference/execution.md | 139 | # ─────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/mask-editor/src/useGPUResources.ts | 48 | // ── Watchers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/mask-editor/src/useGPUResources.ts | 154 | // ── Helpers ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/mask-editor/src/useGPUResources.ts | 207 | // ── Internal functions ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/mask-editor/src/useGPUResources.ts | 265 | // ── Public API ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/mask-editor/src/useGPUResources.ts | 373 | // ── Wrappers called by useBrushDrawing ────────────────────────────────────── | COMMENT |
| MEDIUM | packages/mask-editor/src/useGPUResources.ts | 593 | // ── Private helpers ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/mask-editor/src/useBrushDrawing.ts | 39 | // ── CPU drawing path ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/mask-editor/src/useBrushDrawing.ts | 96 | // ── Drawing orchestration ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ow/persistence/stores/workflowDraftStoreV2.fsm.test.ts | 20 | // ── Model & Real ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ow/persistence/stores/workflowDraftStoreV2.fsm.test.ts | 37 | // ── Invariant Helpers ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ow/persistence/stores/workflowDraftStoreV2.fsm.test.ts | 98 | // ── Commands ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ow/persistence/stores/workflowDraftStoreV2.fsm.test.ts | 296 | // ── Test Suite ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/stores/subgraphNavigationStore.ts | 80 | // ── Helpers ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/stores/subgraphNavigationStore.ts | 97 | // ── Navigation stack ───────────────────────────────────────────── | COMMENT |
| MEDIUM | src/stores/subgraphNavigationStore.ts | 124 | // ── Viewport save / restore ────────────────────────────────────── | COMMENT |
| MEDIUM | src/stores/subgraphNavigationStore.ts | 178 | // ── Navigation handler ─────────────────────────────────────────── | COMMENT |
| MEDIUM | src/stores/subgraphNavigationStore.ts | 213 | // ── Watchers ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/workbench/extensions/agent/crdt/CrdtDevPanel.vue | 182 | // ── open/close state, persisted ─────────────────────────────────────────── | COMMENT |
| MEDIUM | src/workbench/extensions/agent/crdt/CrdtDevPanel.vue | 235 | // ── live document facts ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/workbench/extensions/agent/crdt/CrdtDevPanel.vue | 292 | // ── event log ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/workbench/extensions/agent/crdt/CrdtDevPanel.vue | 345 | // ── merge lab ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/workbench/extensions/agent/crdt/CrdtDevPanel.vue | 403 | // ── copy actions ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/workbench/extensions/agent/crdt/mergeScenarios.ts | 208 | // ── canned scenarios ────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/devtools/__init__.py | 1 | CODE | |
| LOW | tools/devtools/__init__.py | 2 | CODE | |
| LOW | tools/devtools/__init__.py | 2 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 1 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/dev_nodes.py | 3 | CODE | |
| LOW | tools/devtools/nodes/models.py | 1 | CODE | |
| LOW | tools/devtools/nodes/remote.py | 1 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 1 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 3 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 3 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 3 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 3 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 11 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 30 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 30 | CODE | |
| LOW | tools/devtools/nodes/__init__.py | 30 | CODE | |
| 23 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | scripts/agentConversationFromLangfuse.ts | 299 | seed_node_ids: options.seed.workflow.seed.nodes.map((node) => node.id), | CODE |
| CRITICAL | packages/viewport3d/src/three/RendererView.test.ts | 226 | expect(quad.material.uniforms.uvScale.value.toArray()).toEqual([0.5, 0.5]) | CODE |
| CRITICAL | …viewport3d/src/cameraAngle/CameraAngleViewport.test.ts | 234 | stub.viewHelperManager.visibleViewHelper.mock.invocationCallOrder.at(-1)! | CODE |
| CRITICAL | …/vueNodes/widgets/components/WidgetRecordAudio.test.ts | 154 | appMock.app.canvas.graph.getNodeById.mockReset().mockReturnValue(null) | CODE |
| CRITICAL | …/vueNodes/widgets/components/WidgetRecordAudio.test.ts | 283 | appMock.app.canvas.graph.getNodeById.mockReturnValue({ widgets }) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/update-playwright-agents.sh | 11 | # Step 1: Regenerate base agent files | COMMENT |
| LOW | browser_tests/tests/copyPaste.spec.ts | 274 | // Step 1: Copy a KSampler node with Ctrl+C and paste with Ctrl+V | COMMENT |
| LOW | browser_tests/tests/copyPaste.spec.ts | 285 | // Step 2: Paste image onto selected LoadImage node | COMMENT |
| LOW | browser_tests/tests/copyPaste.spec.ts | 307 | // Step 3: Click empty canvas area, paste image → creates new LoadImage | COMMENT |
| LOW | browser_tests/tests/workflowTabThumbnail.spec.ts | 138 | // Step 1: Different tabs should show different previews | COMMENT |
| LOW | browser_tests/tests/workflowTabThumbnail.spec.ts | 154 | // Step 2: Switching without changes shouldn't update thumbnail | COMMENT |
| LOW | browser_tests/tests/workflowTabThumbnail.spec.ts | 166 | // Step 3: Adding another node should cause thumbnail to change | COMMENT |
| LOW | …ts/vueNodes/interactions/links/linkInteraction.spec.ts | 622 | // Step 1: Connect CLIP's only output to KSampler's positive input. | COMMENT |
| LOW | …ts/vueNodes/interactions/links/linkInteraction.spec.ts | 645 | // Step 2: Drag the link from KSampler's positive input to negative. | COMMENT |
| LOW⚡ | …ustomNodes/manager/composables/useConflictDetection.ts | 129 | // Step 1: Use installed packs composable instead of direct API calls | COMMENT |
| LOW⚡ | …ustomNodes/manager/composables/useConflictDetection.ts | 139 | // Step 2: Get Registry service for bulk API calls | COMMENT |
| LOW⚡ | …ustomNodes/manager/composables/useConflictDetection.ts | 142 | // Step 3: Setup abort controller for request cancellation | COMMENT |
| LOW⚡ | …ustomNodes/manager/composables/useConflictDetection.ts | 145 | // Step 4: Use bulk API to fetch all version data in a single request | COMMENT |
| LOW | …ustomNodes/manager/composables/useConflictDetection.ts | 188 | // Step 5: Combine local installation data with Registry version data | COMMENT |
| LOW⚡ | …ponents/searchbox/v2/NodeSearchCategorySidebar.test.ts | 441 | // Step 1: Expand sampling | COMMENT |
| LOW⚡ | …ponents/searchbox/v2/NodeSearchCategorySidebar.test.ts | 445 | // Step 2: Expand custom_sampling | COMMENT |
| LOW⚡ | …ponents/searchbox/v2/NodeSearchCategorySidebar.test.ts | 449 | // Step 3: Navigate back to sampling (keyboard focus only) | COMMENT |
| LOW⚡ | …ponents/searchbox/v2/NodeSearchCategorySidebar.test.ts | 453 | // Step 4: Press left on sampling | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/registry-census/verify_detection.py | 113 | # The harness-integrity check below reports the shortfall; a | COMMENT |
| MEDIUM | scripts/registry-census/verify_detection.py | 294 | # one-row population trips the self-check harness gate, which withholds | COMMENT |
| MEDIUM | .github/workflows/ci-ecosystem-matrix.yaml | 247 | # A shard checks harness integrity only: every built spec must write its | COMMENT |
| MEDIUM | .github/workflows/ci-ecosystem-matrix.yaml | 351 | echo "::error::matrix wrote ${#row_names[@]} rows for $built specs - harness failure, not pack noise" | CODE |
| MEDIUM | .github/workflows/ci-ecosystem-matrix.yaml | 519 | # Runs the poison packs (and the same harness that runs real pack | COMMENT |
| MEDIUM | .github/workflows/ci-ecosystem-matrix.yaml | 553 | # harness gate withheld the verdict, which on this corpus is itself a | COMMENT |
| MEDIUM | src/lib/litegraph/src/infrastructure/Rectangle.test.ts | 532 | // A more robust test could involve spying on property assignments if vitest supports it easily. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/weekly-docs-check.yaml | 42 | # Check if packages are already available locally | COMMENT |
| LOW | .github/workflows/api-update-manager-api-types.yaml | 62 | # Check if file is not empty | COMMENT |
| LOW | .github/workflows/release-weekly-comfyui.yaml | 513 | # Check if PR already exists | COMMENT |
| LOW | .github/workflows/pr-backport.yaml | 330 | # Check if commit already exists on target branch | COMMENT |
| LOW | .github/workflows/release-branch-create.yaml | 79 | # Check if current version is a pre-release | COMMENT |
| LOW | .github/workflows/release-branch-create.yaml | 86 | # Check if this was a minor version bump or major version bump | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/cloud-backport-tag.yaml | 14 | # Creating the ref via the API points at a commit that already exists on the | COMMENT |
| MEDIUM | src/platform/workspace/customDeploymentBrief.ts | 27 | export const CUSTOM_DEPLOYMENT_BRIEF = `# Create a custom deployment on Comfy Cloud | CODE |
| MEDIUM | src/platform/workspace/deploymentBuildBrief.ts | 141 | '# Create a custom deployment that runs a workflow', | CODE |
| MEDIUM | src/platform/workspace/deploymentBuildBrief.test.ts | 227 | expect(brief).toContain('# Create a custom deployment that runs a workflow') | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/devtools/__init__.py | 117 | __all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS", "WEB_DIRECTORY"] | CODE |
| LOW | tools/devtools/dev_nodes.py | 37 | __all__ = [ | CODE |
| LOW | tools/devtools/nodes/models.py | 78 | __all__ = [ | CODE |
| LOW | tools/devtools/nodes/remote.py | 210 | __all__ = [ | CODE |
| LOW | tools/devtools/nodes/__init__.py | 65 | __all__ = [ | CODE |
| LOW | tools/devtools/nodes/inputs.py | 628 | __all__ = [ | STRING |
| LOW | tools/devtools/nodes/errors.py | 82 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | .claude/commands/comprehensive-pr-review.md | 353 | This review is generated by Claude. It may not always be accurate, as with human reviewers. If you believe that any of t | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ING-WEB-0038-checkout-only-hosts-own-plan-selection.md | 14 | design source. They were built in #17798 and #17937 as scaffolding while | CODE |
| MEDIUM | docs/guidance/state-and-effects.md | 63 | ## 3. Async orchestration belongs in commands | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/registry-census/fetch_corpus.py | 422 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/devtools/__init__.py | 73 | except Exception as e: | CODE |
| LOW | tools/devtools/__init__.py | 96 | except Exception as e: | CODE |
| LOW | tools/devtools/__init__.py | 112 | except Exception as e: | CODE |
| LOW | scripts/registry-census/fetch_corpus.py | 528 | except Exception as exc: # noqa: BLE001 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/cicd/custom-nodes-summary.py | 80 | CODE | |
| LOW | scripts/registry-census/fetch_corpus.py | 352 | CODE | |
| LOW | scripts/registry-census/build_matrix.py | 145 | CODE | |
| LOW | scripts/registry-census/summarize_matrix.py | 114 | CODE |