Beautiful, AI-native markdown IDE and LLM wiki
This report summarizes scanner evidence for inkeep/open-knowledge, a TypeScript project with 4,750 GitHub stars. SynthScan examined 1,642,974 lines of code across 6970 source files, recording 3141 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 2.3 (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? 2900 finding(s).
Are imports declared and package/API names verified? 224 finding(s).
Are wrappers, guards, and repeated structures necessary? 2700 finding(s).
Which changes need focused human review? 3141 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 3141 distinct pattern matches across 13 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 | …-rules/__fixtures__/no-hand-rolled-spinner.fixture.tsx | 78 | export function NegativeNonClassAttribute() { | CODE |
| LOW | …rules/__fixtures__/no-empty-jsx-expression.fixture.tsx | 46 | export function PositiveOxlintBeforeElement() { | CODE |
| LOW | …rules/__fixtures__/no-empty-jsx-expression.fixture.tsx | 58 | export function PositiveDirectiveAndProse() { | CODE |
| LOW | …rules/__fixtures__/no-empty-jsx-expression.fixture.tsx | 81 | export function NegativeOxlintBeforeTextElement() { | CODE |
| LOW | …rules/__fixtures__/no-empty-jsx-expression.fixture.tsx | 106 | export function NegativeEmptyObjectAttribute() { | CODE |
| LOW | …/__fixtures__/no-split-suggestion-dispatch.fixture.tsx | 102 | export function negativeOutsideSuggestion(editor: FixtureEditor, range: FixtureRange): void { | CODE |
| LOW | …s/ok-rules/__fixtures__/microcopy-ellipsis.fixture.tsx | 16 | export function PositiveJsxAttributePlaceholder() { | CODE |
| LOW | …s/src/app/d/[encoded]/splash-download-split-button.tsx | 44 | export function SplashDownloadSplitButton({ | CODE |
| LOW | docs/src/lib/changelog-source.ts | 24 | export function buildChangelogSourceFiles( | CODE |
| LOW | docs/src/lib/download-targets.ts | 189 | export function downloadHrefForDetectedOs(cta: DownloadCta, os: DetectedOs): string { | CODE |
| LOW | docs/src/lib/share-contract-manifest.ts | 11 | export function buildShareContractManifest( | CODE |
| LOW | docs/src/lib/markdown-fidelity.test-helper.ts | 31 | export function markdownFidelityViolations(name: string, markdown: string): FidelityViolation[] { | CODE |
| LOW | docs/src/lib/share-splash.ts | 133 | function parseCanonicalGitHubShareUrl(sharedUrl: string): CanonicalGitHubShareSource { | CODE |
| LOW | docs/src/lib/share-splash.ts | 203 | function assertCanonicalPathComponent(component: string): void { | CODE |
| LOW | docs/src/lib/share-splash.ts | 217 | function serializeCanonicalGitHubShareUrl(source: CanonicalGitHubShareSource): string { | CODE |
| LOW | packages/core/tests/perf/regression-gate.test.ts | 409 | function regressedParseBlockCounts(baseline: Baseline, scale: number): number[] { | CODE |
| LOW | packages/core/tests/perf/regression-gate.ts | 206 | export function checkMethodologyMismatches( | CODE |
| LOW | packages/core/scripts/chrome-resolver.ts | 82 | function resolveSidebarOffsetToHex( | CODE |
| LOW | packages/core/scripts/chrome-resolver.ts | 109 | export function resolveChromeTokensFromCss(cssPath: string): ChromeTokens { | CODE |
| LOW | packages/core/scripts/chrome-resolver.ts | 125 | export function renderChromeConstantsModule(tokens: ChromeTokens): string { | CODE |
| LOW | packages/core/scripts/generate-markdownlint-catalog.ts | 46 | export function resolveMarkdownlintSchemaPath(): string { | CODE |
| LOW | packages/core/scripts/generate-markdownlint-catalog.ts | 121 | function requireOptionalStringArray(value: unknown, context: string): string[] | undefined { | CODE |
| LOW | packages/core/scripts/generate-markdownlint-catalog.ts | 226 | export function buildMarkdownlintRuleCatalog(schema: unknown): RuleCatalogEntry[] { | CODE |
| LOW | packages/core/scripts/preview-theme-token-resolver.ts | 136 | export function resolvePreviewThemeTokensFromCss(cssPath: string): ResolvedPreviewToken[] { | CODE |
| LOW | packages/core/scripts/preview-theme-token-resolver.ts | 170 | export function renderPreviewThemeTokensModule(tokens: ResolvedPreviewToken[]): string { | CODE |
| LOW | packages/core/src/shadow-repo-layout.ts | 467 | export function okActorToShadowContributor(a: OkActorEntry): ShadowContributor { | CODE |
| LOW | packages/core/src/helper-bundle.ts | 15 | export function resolveHelperBundleBinary(parentExecPath: string): string { | CODE |
| LOW | packages/core/src/checkpoint-kinds.ts | 618 | export function isChainAnchorCheckpointKind(kind: CheckpointKind | null | undefined): boolean { | CODE |
| LOW⚡ | packages/core/src/logger-types.ts | 91 | export function isBugReportAttachmentEntry(name: string): boolean { | CODE |
| LOW⚡ | packages/core/src/logger-types.ts | 98 | export function isBugReportAgentChatEntry(name: string): boolean { | CODE |
| LOW⚡ | packages/core/src/logger-types.ts | 106 | export function isBugReportCrashDumpEntry(name: string): boolean { | CODE |
| LOW | packages/core/src/app-shell-csp.ts | 13 | function appShellContentSecurityPolicy(html: string): string { | CODE |
| LOW | packages/core/src/terminal-layout.ts | 21 | export function normalizeTerminalPlacement(value: unknown): TerminalPlacement { | CODE |
| LOW | packages/core/src/terminal-layout.ts | 25 | export function normalizeTerminalRightWidth(value: unknown): number { | CODE |
| LOW | packages/core/src/desktop-bridge.ts | 1002 | export function assetOpenRefusalRevealsInstead(reason: OkAssetOpenRefusalReason): boolean { | CODE |
| LOW | packages/core/src/desktop-bridge.ts | 1018 | export function assertNeverPtyCreateReason(value: never): never { | CODE |
| LOW | packages/core/src/desktop-bridge.ts | 1038 | export function assertNeverPtyAdoptReason(value: never): never { | CODE |
| LOW | packages/core/src/desktop-bridge.ts | 1090 | export function isTerminalShellNoticeReason(value: unknown): value is TerminalShellNoticeReason { | CODE |
| LOW | packages/core/src/desktop-bridge.ts | 1108 | export function isTerminalSupportFileNoticeReason( | CODE |
| LOW | packages/core/src/y-prosemirror-patch.test.ts | 41 | function resolveInstalledPackageDir(packageName: string): string { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 67 | export function incrementWholeDocFallback(): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 71 | export function incrementWholeDocBudgetFallback(): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 75 | export function incrementJsxRenderFailure(component: string): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 79 | export function incrementJsxAutoConvertFailed(component: string): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 83 | export function incrementJsxAutoConvertSucceeded(component: string): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 88 | export function incrementJsxActionAborted(action: JsxNodeAction): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 100 | export function incrementJsxStuckCopyFailed(component: string): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 104 | export function incrementJsxStuckDeleteFailed(component: string): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 108 | export function incrementJsxPopoverCloseRestoreFailed(component: string): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 113 | export function incrementJsxKeyboardDeleteFailed(component: string): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 118 | export function incrementJsxChromeDeleteFailed(component: string): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 122 | export function incrementBlockGripClickSelectFailed(nodeType: string): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 127 | export function incrementJsxArrowNodeSelectFailed( | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 134 | export function incrementYpsMismatchBlock(): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 138 | export function incrementYpsMismatchInline(): void { | CODE |
| LOW | packages/core/src/types/awareness.ts | 52 | export function isPresenceSentinelDocName(name: string | null | undefined): boolean { | CODE |
| LOW | packages/core/src/sharing/candidate-selection.ts | 303 | function compareCandidatesForTiebreak(a: Candidate, b: Candidate): number { | CODE |
| LOW | packages/core/src/sharing/receive-flow.ts | 45 | export function findRecentProjectsForRepo( | CODE |
| LOW | packages/core/src/sharing/share-url.ts | 120 | export function parseCanonicalGitHubShareUrl(sharedUrl: string): CanonicalGitHubShareSource { | CODE |
| LOW | packages/core/src/sharing/share-url.ts | 174 | export function serializeCanonicalGitHubShareUrl(source: CanonicalGitHubShareSource): string { | CODE |
| 2623 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …tests/integration/removal-phantom-resurrection.test.ts | 39 | const ext = server.instance.hocuspocus.configuration.extensions.find( | CODE |
| CRITICAL | …ntegration/stale-publication-completion.test-helper.ts | 230 | running.instance.hocuspocus.configuration.extensions.push({ | CODE |
| CRITICAL | …s/app/tests/integration/stale-removal-adoption.test.ts | 115 | const oldResident = scenario.server.instance.hocuspocus.documents.get(scenario.docName); | CODE |
| CRITICAL | …s/app/tests/integration/stale-removal-adoption.test.ts | 176 | expect(scenario.server.instance.hocuspocus.documents.get(scenario.docName)).not.toBe(oldResident); | CODE |
| CRITICAL | …s/app/tests/integration/outside-rename-pairing.test.ts | 103 | return rig.server.instance.hocuspocus.documents.get(docName)?.getText('source').toString() ?? ''; | CODE |
| CRITICAL | …s/app/tests/integration/outside-rename-pairing.test.ts | 107 | return rig.server.instance.hocuspocus.documents.get(docName)?.getMap('lifecycle').get('status'); | CODE |
| CRITICAL | …s/app/tests/integration/outside-rename-pairing.test.ts | 155 | rig.server.instance.hocuspocus.documents.get(rig.docName)?.getMap('lifecycle').get('newPath'), | CODE |
| CRITICAL | …s/app/tests/integration/outside-rename-pairing.test.ts | 299 | expect(rig.server.instance.hocuspocus.documents.has(rig.docName)).toBe(true); | CODE |
| CRITICAL | …/app/tests/integration/stale-publication-burst.test.ts | 23 | const resident = scenario.server.instance.hocuspocus.documents.get(scenario.docName); | CODE |
| CRITICAL | …/app/tests/integration/stale-publication-burst.test.ts | 40 | expect(scenario.server.instance.hocuspocus.documents.get(scenario.docName)).toBe(resident); | CODE |
| CRITICAL | …/app/tests/integration/stale-publication-burst.test.ts | 85 | expect(scenario.server.instance.hocuspocus.documents.get(scenario.docName)).toBe(resident); | CODE |
| CRITICAL | …/app/tests/integration/stale-publication-burst.test.ts | 95 | scenario.server.instance.hocuspocus.documents.get(scenario.docName) === resident, | CODE |
| CRITICAL | …/app/tests/integration/stale-publication-burst.test.ts | 112 | expect(scenario.server.instance.hocuspocus.documents.get(scenario.docName)).toBe(resident); | CODE |
| CRITICAL | …s/integration/stale-resolved-delete-retirement.test.ts | 22 | const resident = scenario.server.instance.hocuspocus.documents.get(scenario.docName); | CODE |
| CRITICAL | …s/integration/stale-resolved-delete-retirement.test.ts | 68 | expect(scenario.server.instance.hocuspocus.documents.get(scenario.docName)).toBe(resident); | CODE |
| CRITICAL | …s/integration/stale-resolved-delete-retirement.test.ts | 75 | expect(scenario.server.instance.hocuspocus.documents.get(scenario.docName)).not.toBe(resident); | CODE |
| CRITICAL | …/app/tests/integration/stale-delete-recreation.test.ts | 83 | expect(scenario.server.instance.hocuspocus.documents.has(scenario.docName)).toBe(initiallyOpen); | CODE |
| CRITICAL | packages/app/src/editor/extensions/JsxComponentView.tsx | 342 | const fallbackNode = node.type.schema.nodes.rawMdxFallback.create( | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 567 | rig.clock.setTimeout.mock.calls.filter(([, ms]) => ms === UPDATE_CHECK_DEADLINE_MS), | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 684 | feed: rig.updater.setFeedURL.mock.calls.at(-1)?.[0], | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 710 | rig.updater.setFeedURL.mock.calls.filter( | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 768 | const feed = rig.updater.setFeedURL.mock.calls.at(-1)?.[0]; | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 823 | rig.logger.warn.mock.calls.filter( | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 914 | rig.logger.info.mock.calls.filter( | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 2929 | expect(rig.clock.setTimeout.mock.calls.map(([, ms]) => ms)).toEqual([ | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 2977 | rig.clock.setTimeout.mock.calls.filter(([, ms]) => ms === UPDATE_CHECK_DEADLINE_MS), | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 2996 | expect(rig.clock.setTimeout.mock.calls.map(([, ms]) => ms)).toEqual([ | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 3610 | rig.clock.setTimeout.mock.calls.filter(([, ms]) => ms === UPDATE_CHECK_INTERVAL_MS), | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 3615 | rig.clock.setTimeout.mock.calls.filter(([, ms]) => ms === UPDATE_CHECK_INTERVAL_MS), | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 3632 | rig.clock.setTimeout.mock.calls.filter(([, ms]) => ms === UPDATE_CHECK_INTERVAL_MS), | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 3637 | rig.clock.setTimeout.mock.calls.filter(([, ms]) => ms === UPDATE_CHECK_INTERVAL_MS), | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 3677 | const intervalRegistrations = rig.clock.setTimeout.mock.calls.filter( | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 3684 | rig.clock.setTimeout.mock.calls.filter(([, ms]) => ms === UPDATE_CHECK_INTERVAL_MS), | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 3723 | const deadlineIndex = rig.clock.setTimeout.mock.calls.findLastIndex( | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 3827 | const feed = rig.updater.setFeedURL.mock.calls.at(-1)?.[0]; | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 3850 | rig.clock.setTimeout.mock.calls.filter(([, ms]) => ms === UPDATE_CHECK_DEADLINE_MS), | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 3859 | const deadlineIndex = rig.clock.setTimeout.mock.calls.findLastIndex( | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 3881 | const reuseLogsBeforeClick = rig.logger.info.mock.calls.filter( | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 3889 | rig.logger.info.mock.calls.filter( | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 4017 | const feed = rig.updater.setFeedURL.mock.calls.at(-1)?.[0]; | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 4063 | rig.updater.setFeedURL.mock.calls.filter( | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 4095 | rig.updater.setFeedURL.mock.calls.filter( | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 4547 | const feed = rig.updater.setFeedURL.mock.calls.at(-1)?.[0]; | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 4677 | rig.clock.setTimeout.mock.calls.filter(([, ms]) => ms === UPDATE_CHECK_INTERVAL_MS), | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 5313 | rig.logger.warn.mock.calls.some((c) => c[0] === 'staged-update cache reclaim failed'), | CODE |
| CRITICAL | packages/desktop/tests/utility/server-entry.test.ts | 1137 | return env.parentPort.postMessage.mock.calls.map(([message]) => message); | CODE |
| CRITICAL | packages/desktop/tests/utility/server-entry.test.ts | 1513 | return env.parentPort.postMessage.mock.calls.map(([msg]) => (msg as { type?: unknown }).type); | CODE |
| CRITICAL | packages/server/src/parcel-drop-notice.test.ts | 4239 | active.serverInstance.hocuspocus.configuration.extensions.push({ | CODE |
| CRITICAL | packages/server/src/server-authority-retirement.test.ts | 132 | owner.serverInstance.hocuspocus.configuration.extensions.unshift({ | CODE |
| CRITICAL | packages/server/src/nested-project-authority.test.ts | 60 | const guard = owner.serverInstance.hocuspocus.configuration.extensions.find( | CODE |
| CRITICAL | packages/server/src/nested-project-authority.test.ts | 206 | const extension = owner.serverInstance.hocuspocus.configuration.extensions.find( | CODE |
| CRITICAL | …kages/server/src/private-skill-trust-admission.test.ts | 215 | booted.serverInstance.hocuspocus.configuration.extensions.push({ | CODE |
| CRITICAL | …kages/server/src/private-skill-trust-admission.test.ts | 527 | booted.serverInstance.hocuspocus.configuration.extensions.unshift({ | CODE |
| CRITICAL | …kages/server/src/private-skill-trust-admission.test.ts | 532 | booted.serverInstance.hocuspocus.configuration.extensions.push({ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pnpm-workspace.yaml | 61 | protobufjs: false | COMMENT |
| LOW | pnpm-workspace.yaml | 81 | # bad-`size` advisories were never reachable there) | COMMENT |
| LOW | pnpm-workspace.yaml | 121 | 'next@16': ~16.3.8 | COMMENT |
| LOW | pnpm-workspace.yaml | 141 | # view calls `EditorSelection.undirectionalRange`, which 6.6.0 does not define. | COMMENT |
| LOW | …les/__fixtures__/no-demoted-dialog-confirm.fixture.tsx | 1 | // FIXTURE — drives `no-demoted-dialog-confirm.uncached.test.mjs` via shell-out to | COMMENT |
| LOW | …/__fixtures__/no-roundtrip-identity-oracle.fixture.tsx | 1 | // FIXTURE — drives `no-roundtrip-identity-oracle.uncached.test.mjs` via shell-out to oxlint. Not part | COMMENT |
| LOW | …-rules/__fixtures__/no-hand-rolled-spinner.fixture.tsx | 1 | // FIXTURE — drives `no-hand-rolled-spinner.uncached.test.mjs` via shell-out to | COMMENT |
| LOW | …__fixtures__/no-uninstall-forbidden-import.fixture.tsx | 1 | // FIXTURE — drives `no-uninstall-forbidden-import.uncached.test.mjs` via shell-out to | COMMENT |
| LOW | …fixtures__/no-redundant-jsx-element-braces.fixture.tsx | 1 | // FIXTURE: drives `no-redundant-jsx-element-braces.uncached.test.ts` via | COMMENT |
| LOW | …fixtures__/no-raw-html-interactive-element.fixture.tsx | 1 | // FIXTURE — drives `no-raw-html-interactive-element.uncached.test.mjs` via shell-out | COMMENT |
| LOW | …ules/__fixtures__/no-themeless-pierre-diff.fixture.tsx | 1 | // FIXTURE — drives `no-themeless-pierre-diff.uncached.test.mjs` via shell-out to | COMMENT |
| LOW | …ules/__fixtures__/cst-pm-handler-todo-stub.fixture.tsx | 1 | // FIXTURE — drives `cst-pm-handler-todo-stub.uncached.test.mjs` via shell-out | COMMENT |
| LOW | …-rules/__fixtures__/no-fixed-palette-color.fixture.tsx | 1 | // FIXTURE — drives `no-fixed-palette-color.uncached.test.mjs` via shell-out to | COMMENT |
| LOW | …/__fixtures__/no-unportaled-editor-content.fixture.tsx | 1 | // FIXTURE — drives `no-unportaled-editor-content.uncached.test.mjs` via shell-out | COMMENT |
| LOW | …/__fixtures__/no-unportaled-editor-content.fixture.tsx | 61 | // even though `EditorContent` is named there. | COMMENT |
| LOW | …ures__/class-proof-registration-discipline.fixture.tsx | 1 | // FIXTURE — drives `class-proof-registration-discipline.uncached.test.mjs` via | COMMENT |
| LOW | …les/__fixtures__/no-sentinel-signal-target.fixture.tsx | 1 | // FIXTURE — drives `no-sentinel-signal-target.uncached.test.mjs` via shell-out to | COMMENT |
| LOW | …tures__/path-conditional-map-driven-origin.fixture.tsx | 1 | // FIXTURE — drives `path-conditional-map-driven-origin.uncached.test.mjs` via shell-out | COMMENT |
| LOW | …_fixtures__/no-raw-route-hash-construction.fixture.tsx | 1 | // FIXTURE — drives `no-raw-route-hash-construction.uncached.test.mjs` via shell-out to oxlint. Not part | COMMENT |
| LOW | …rules/__fixtures__/no-empty-jsx-expression.fixture.tsx | 1 | // FIXTURE: drives `no-empty-jsx-expression.uncached.test.ts` via shell-out to | COMMENT |
| LOW | …/__fixtures__/require-windowshide-on-spawn.fixture.tsx | 1 | // FIXTURE — drives `require-windowshide-on-spawn.uncached.test.mjs` via shell-out to | COMMENT |
| LOW | …ixtures__/no-hand-rolled-branch-validation.fixture.tsx | 1 | // FIXTURE — drives `no-hand-rolled-branch-validation.uncached.test.mjs` via shell-out to | COMMENT |
| LOW | …__fixtures__/require-utf8-multipart-parser.fixture.tsx | 1 | // FIXTURE — drives `require-utf8-multipart-parser.uncached.test.mjs` via shell-out to | COMMENT |
| LOW | …s/__fixtures__/no-unconverted-git-pathspec.fixture.tsx | 1 | // FIXTURE — drives `no-unconverted-git-pathspec.uncached.test.mjs` via shell-out to oxlint. Not | COMMENT |
| LOW | …s/__fixtures__/no-unconverted-git-pathspec.fixture.tsx | 81 | // N5: `git mv` takes literal path arguments, not pathspecs | COMMENT |
| LOW | …fixtures__/playwright-prefer-to-have-count.fixture.tsx | 1 | // FIXTURE — drives `playwright-prefer-to-have-count.uncached.test.mjs` via shell-out to oxlint. Not part | COMMENT |
| LOW | …/__fixtures__/no-split-suggestion-dispatch.fixture.tsx | 1 | // FIXTURE — drives `no-split-suggestion-dispatch.uncached.test.mjs` via shell-out to oxlint. Not part | COMMENT |
| LOW | …fixtures__/no-unwrapped-user-facing-string.fixture.tsx | 1 | // FIXTURE — drives `no-unwrapped-user-facing-string.uncached.test.mjs` via shell-out to | COMMENT |
| LOW | …les/__fixtures__/no-inline-tolerance-class.fixture.tsx | 1 | // FIXTURE — drives `no-inline-tolerance-class.uncached.test.mjs` via shell-out to oxlint. Not part | COMMENT |
| LOW | …es/__fixtures__/no-blind-agent-host-fanout.fixture.tsx | 1 | // FIXTURE — drives `no-blind-agent-host-fanout.uncached.test.mjs` via shell-out to oxlint. Not part | COMMENT |
| LOW | packages/app/vitest.dom.config.ts | 1 | import { fileURLToPath } from 'node:url'; | COMMENT |
| LOW | packages/app/tsconfig.json | 21 | // it reads `@hocuspocus/provider` internals that four suites arrange through, | COMMENT |
| LOW | packages/app/tsconfig.json | 41 | // `tests/stress/_helpers/theme-fade.ts` is named for the same reason, and its | COMMENT |
| LOW | packages/app/tsconfig.json | 61 | // | COMMENT |
| LOW | packages/app/playwright.config.ts | 81 | globalSetup: [ | COMMENT |
| LOW | packages/app/playwright.config.ts | 101 | // assertions safe by default; the per-test `timeout: 120_000` still bounds | COMMENT |
| LOW | packages/app/vite.config.ts | 41 | const viteCacheDir = process.env.OK_TEST_VITE_CACHE_DIR; | COMMENT |
| LOW | packages/app/vite.config.ts | 61 | }, | COMMENT |
| LOW | packages/app/vite.config.ts | 121 | // Largest chunk today is ~1.13 MB pre-gzip (≈350 kB gzipped). The bundle | COMMENT |
| LOW | …p/tests/stress/_helpers/port-ownership/cleanup-order.c | 1 | #define _GNU_SOURCE | COMMENT |
| LOW | packages/desktop/electron.vite.config.ts | 61 | // node-pty lives in optionalDependencies (a failed native build must | COMMENT |
| LOW | packages/desktop/electron.vite.config.ts | 101 | build: { | COMMENT |
| LOW | packages/desktop/electron.vite.config.ts | 141 | }, | COMMENT |
| LOW | packages/desktop/playwright.packaged.config.ts | 61 | // carries no `if:` — so it skips exactly when there is something to lose. | COMMENT |
| LOW | packages/desktop/electron-builder.linux.yml | 1 | # Linux packaging config. Inherits everything from `electron-builder.yml` and | COMMENT |
| LOW | packages/desktop/electron-builder.linux.yml | 21 | # this._nodeModulesHandledExternally = !performDependenciesInstallOrRebuild | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 1 | appId: com.inkeep.open-knowledge | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 61 | to: "app" | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 101 | # NSIS include agree on one location. | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 121 | # electron-builder places Electron's own LICENSE separately; that covers | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 141 | - from: "../../node_modules/@napi-rs/keyring" | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 161 | - "index.d.ts" | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 201 | - "**/simple-git/**" | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 221 | category: public.app-category.productivity | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 241 | # part of the Xcode command-line tools). | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 261 | # fix is either (a) an `x64ArchFiles` glob that names the keyring module | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 281 | hardenedRuntime: true | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 301 | # | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 321 | # Handoff (the only flow this app uses). Adding new types here requires a | COMMENT |
| LOW | packages/desktop/electron-builder.yml | 341 | # not `false` and APPLE_* credentials are set, so leaving it unset notarizes | COMMENT |
| 98 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 568 | 'lorem ipsum dolor sit amet '.repeat(2000), | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 568 | 'lorem ipsum dolor sit amet '.repeat(2000), | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 587 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 587 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 604 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 604 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 623 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 623 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 645 | selectionMarkdown: 'lorem ipsum dolor sit amet '.repeat(2000), | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 645 | selectionMarkdown: 'lorem ipsum dolor sit amet '.repeat(2000), | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 1074 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 1074 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/logging/secret-scrub.test.ts | 37 | expect(scrubSecrets('/Users/Jane Doe/notes/plan.md')).not.toContain('Jane Doe'); | CODE |
| LOW | packages/core/src/logging/secret-scrub.test.ts | 39 | expect(scrubSecrets('/home/Jane Doe/notes')).not.toContain('Jane Doe'); | CODE |
| LOW | …ests/integration/conflict-aware-write-surfaces.test.ts | 461 | 'test@test.com', | CODE |
| LOW⚡ | …ages/app/tests/dom/input-rule-atom-ranges.dom.test.tsx | 101 | const lead = `${'lorem ipsum dolor sit amet '.repeat(2)}**see `; | CODE |
| LOW⚡ | …ages/app/tests/dom/input-rule-atom-ranges.dom.test.tsx | 101 | const lead = `${'lorem ipsum dolor sit amet '.repeat(2)}**see `; | CODE |
| LOW⚡ | …ages/app/tests/dom/input-rule-atom-ranges.dom.test.tsx | 107 | expect(text.startsWith('lorem ipsum dolor sit amet '.repeat(2))).toBe(true); | CODE |
| LOW⚡ | …ages/app/tests/dom/input-rule-atom-ranges.dom.test.tsx | 107 | expect(text.startsWith('lorem ipsum dolor sit amet '.repeat(2))).toBe(true); | CODE |
| LOW⚡ | …ages/app/tests/dom/input-rule-atom-ranges.dom.test.tsx | 111 | const leadEnd = 1 + 'lorem ipsum dolor sit amet '.repeat(2).length; | CODE |
| LOW⚡ | …ages/app/tests/dom/input-rule-atom-ranges.dom.test.tsx | 111 | const leadEnd = 1 + 'lorem ipsum dolor sit amet '.repeat(2).length; | CODE |
| LOW | …kages/app/tests/stress/bridge-convergence.fuzz.test.ts | 121 | const filler = 'lorem ipsum dolor sit amet '.repeat(25000); | CODE |
| LOW | …kages/app/tests/stress/bridge-convergence.fuzz.test.ts | 121 | const filler = 'lorem ipsum dolor sit amet '.repeat(25000); | CODE |
| LOW | …app/tests/stress/agents-panel-reload-visibility.e2e.ts | 1015 | .getAttribute('placeholder'); | CODE |
| LOW | …kages/app/tests/stress/command-palette-semantic.e2e.ts | 106 | await expect(cmdkInput(page)).toHaveAttribute('placeholder', 'Search by meaning'); | CODE |
| LOW | packages/app/scripts/audit-strings/extract.ts | 16 | 'placeholder', | CODE |
| LOW | …ckages/app/src/components/ReportBugDialog.dom.test.tsx | 238 | expect(noteBox.getAttribute('placeholder')).toBe( | CODE |
| LOW | …ckages/app/src/components/ReportBugDialog.dom.test.tsx | 624 | expect(noteBox.getAttribute('placeholder')).toBe( | CODE |
| LOW | …/app/src/components/ActivityPanelDiffView.dom.test.tsx | 20 | const FILL = 'lorem ipsum dolor sit amet consectetur '.repeat(36); | CODE |
| LOW | …/app/src/components/ActivityPanelDiffView.dom.test.tsx | 20 | const FILL = 'lorem ipsum dolor sit amet consectetur '.repeat(36); | CODE |
| LOW | …ponents/settings/FrontmatterPluginSection.dom.test.tsx | 261 | expect(input?.getAttribute('placeholder')).toContain('guides/**/*'); | CODE |
| LOW | …ponents/settings/FrontmatterPluginSection.dom.test.tsx | 262 | expect(input?.getAttribute('placeholder')).toContain('pattern'); | CODE |
| LOW | …omponents/settings/SpellcheckLanguagesRow.dom.test.tsx | 514 | expect(screen.getByRole('combobox').getAttribute('placeholder')).toBe( | CODE |
| LOW | …s/app/src/uninstall/uninstall-copy-parity.dom.test.tsx | 13 | const placeholder = el.getAttribute('placeholder'); | CODE |
| LOW | packages/app/src/editor/ComposerMentionInput.tsx | 188 | (extension) => extension.name === 'placeholder', | CODE |
| LOW | packages/app/src/editor/components/Mirror.tsx | 11 | function StatusFrame(props: { tone: 'placeholder' | 'error'; children: React.ReactNode }) { | CODE |
| LOW | packages/app/src/editor/components/Mirror.tsx | 37 | <StatusFrame tone="placeholder"> | CODE |
| LOW | packages/app/src/editor/components/Mirror.tsx | 50 | <StatusFrame tone="placeholder"> | CODE |
| LOW | …/src/editor/clipboard/clipboard-line-structure.test.ts | 415 | state: EditorState.create({ schema, doc: docFromMarkdown('placeholder') }), | CODE |
| LOW | …/src/editor/clipboard/clipboard-line-structure.test.ts | 481 | const probe = mountView(docFromMarkdown('placeholder')); | CODE |
| LOW⚡ | packages/desktop/src/main/bug-report-agent-chat.test.ts | 257 | 'fake-key-body-line-one', | CODE |
| LOW⚡ | packages/desktop/src/main/bug-report-agent-chat.test.ts | 258 | 'fake-key-body-line-two', | CODE |
| LOW⚡ | packages/desktop/src/main/bug-report-agent-chat.test.ts | 268 | expect(text).not.toContain('fake-key-body'); | CODE |
| LOW⚡ | packages/desktop/src/main/bug-report-agent-chat.test.ts | 275 | const tail = ['fake-key-body-line-two', '-----END OPENSSH PRIVATE KEY-----'].join('\n'); | CODE |
| LOW⚡ | packages/desktop/src/main/bug-report-agent-chat.test.ts | 278 | 'fake-key-body-line-three', | CODE |
| LOW | packages/desktop/src/main/bug-report-agent-chat.test.ts | 295 | expect(text).not.toContain('fake-key-body'); | CODE |
| LOW | packages/desktop/src/main/bug-report-agent-chat.test.ts | 321 | expect(text).not.toContain('fake-key-bo'); | CODE |
| LOW | packages/desktop/src/main/bug-report-agent-chat.test.ts | 335 | expect(text).not.toContain('fake-key-body'); | CODE |
| LOW | packages/server/src/checkpoint-chain.test.ts | 28 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | …ver/src/server-observers-paired-write-baseline.test.ts | 33 | const fixturePayload = '## Section 1\n\nLorem ipsum dolor.\n \nSit amet.\n'; | CODE |
| LOW | packages/server/src/checkpoint-restore-floor.test.ts | 52 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/saved-themes-write.test.ts | 223 | writeFileSync(join(dir, 'terse.yml'), 'placeholder'); | CODE |
| LOW | packages/server/src/checkpoint-retention-tie.test.ts | 28 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/qa-gc-budget-isolation.test.ts | 31 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/rename-log.test.ts | 556 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/rename-log.test.ts | 835 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/rename-log.test.ts | 1167 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/derive-timing-exhaustion.test.ts | 145 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/conflict-authority.test.ts | 1008 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/conflict-authority.test.ts | 1159 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| 90 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 234 | const phaseRecords = {json.dumps(os.environ.get("OK_PTY_PHASE_TRACE") == "1")} ? [] : null; | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 236 | const markPhase = phaseRecords ? (phase, edge, ptyId = null) => {{ | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 239 | phaseRecords.push({{ | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 246 | }} : undefined; | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 250 | let ptyId = null; | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 252 | let createdAt = null; | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 253 | let firstByteAt = null; | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 254 | let markerAt = null; | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 314 | releases.push(bridge.terminal.onData((message) => {{ | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 322 | releases.push(bridge.terminal.onExit((message) => {{ | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 324 | endings.push({{ ...message, atMs: sinceStart(performance.now()) }}); | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 326 | releases.push(bridge.terminal.onNotice((message) => {{ | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 328 | notices.push({{ ...message, atMs: sinceStart(performance.now()) }}); | CODE |
| HIGH | packages/desktop/scripts/smoke-terminal-package-cdp.py | 271 | if (ptyId !== null) await bridge.terminal.kill(ptyId).catch(() => {{}}); | CODE |
| HIGH | packages/desktop/scripts/smoke-terminal-package-cdp.py | 278 | if (firstByteAt === null) {{ | CODE |
| HIGH | packages/desktop/scripts/smoke-terminal-package-cdp.py | 299 | void finish(null); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …r/assets/skills/packs/knowledge-base/research/SKILL.md | 78 | ## Step 0: Create workflow checkpoint tasks | COMMENT |
| LOW | …r/assets/skills/packs/knowledge-base/research/SKILL.md | 105 | ## Step 1: Scan existing coverage + route | COMMENT |
| LOW | …r/assets/skills/packs/knowledge-base/research/SKILL.md | 154 | ## Step 2: Collaborative scoping (Supervised STOP gate) | COMMENT |
| LOW | …r/assets/skills/packs/knowledge-base/research/SKILL.md | 193 | ## Step 3: Capture raw sources via ingest | COMMENT |
| LOW | …r/assets/skills/packs/knowledge-base/research/SKILL.md | 203 | ## Step 4: Read + analyze | COMMENT |
| LOW | …r/assets/skills/packs/knowledge-base/research/SKILL.md | 228 | ## Step 5: Write the research article (Path A only) | COMMENT |
| LOW | …r/assets/skills/packs/knowledge-base/research/SKILL.md | 309 | ## Step 6: Link aggressively + file valuable Q&A back | COMMENT |
| LOW | …r/assets/skills/packs/knowledge-base/research/SKILL.md | 332 | ## Step 7: Validate | COMMENT |
| LOW | …r/assets/skills/packs/knowledge-base/research/SKILL.md | 346 | ## Step 8: Recap + follow-up directions | COMMENT |
| LOW | …ills/packs/software-lifecycle/review-a-design/SKILL.md | 27 | ## Step 0: Identify the artifact and read it — and what it inherits | COMMENT |
| LOW | …ills/packs/software-lifecycle/review-a-design/SKILL.md | 48 | ## Step 1: Reconstruct the design's own argument — and show it back | COMMENT |
| LOW | …ills/packs/software-lifecycle/review-a-design/SKILL.md | 61 | ## Step 2: Run the soundness lenses | COMMENT |
| LOW | …ills/packs/software-lifecycle/review-a-design/SKILL.md | 77 | ## Step 3: Write findings | COMMENT |
| LOW | …ills/packs/software-lifecycle/review-a-design/SKILL.md | 93 | ## Step 4: Calibrate — adversarially re-read your own findings | COMMENT |
| LOW | …ills/packs/software-lifecycle/review-a-design/SKILL.md | 104 | ## Step 5: Deliver | COMMENT |
| LOW | …ills/packs/software-lifecycle/review-a-design/SKILL.md | 118 | ## Step 6: Hand off | COMMENT |
| LOW | …lls/packs/software-lifecycle/frame-a-proposal/SKILL.md | 40 | ## Step 0: Scan prior art | COMMENT |
| LOW | …lls/packs/software-lifecycle/frame-a-proposal/SKILL.md | 59 | ## Step 1: Frame the problem — STOP gate | COMMENT |
| LOW | …lls/packs/software-lifecycle/frame-a-proposal/SKILL.md | 86 | ## Step 2: Allocate the number and create from template | COMMENT |
| LOW | …lls/packs/software-lifecycle/frame-a-proposal/SKILL.md | 111 | ## Step 3: Motivation | COMMENT |
| LOW | …lls/packs/software-lifecycle/frame-a-proposal/SKILL.md | 123 | ## Step 4: Design | COMMENT |
| LOW | …lls/packs/software-lifecycle/frame-a-proposal/SKILL.md | 135 | ## Step 5: Alternatives | COMMENT |
| LOW | …lls/packs/software-lifecycle/frame-a-proposal/SKILL.md | 155 | ## Step 6: Drawbacks | COMMENT |
| LOW | …lls/packs/software-lifecycle/frame-a-proposal/SKILL.md | 165 | ## Step 7: Unresolved questions | COMMENT |
| LOW | …lls/packs/software-lifecycle/frame-a-proposal/SKILL.md | 181 | ## Step 8: Link + validate | COMMENT |
| LOW | …lls/packs/software-lifecycle/frame-a-proposal/SKILL.md | 194 | ## Step 9: Recap + path to fcp | COMMENT |
| LOW | …/skills/packs/software-lifecycle/write-a-spec/SKILL.md | 48 | ## Step 0: Find the parent proposal | COMMENT |
| LOW | …/skills/packs/software-lifecycle/write-a-spec/SKILL.md | 67 | ## Step 1: Map the CURRENT system before designing the change | COMMENT |
| LOW | …/skills/packs/software-lifecycle/write-a-spec/SKILL.md | 86 | ## Step 2: Scoping STOP gate | COMMENT |
| LOW | …/skills/packs/software-lifecycle/write-a-spec/SKILL.md | 121 | ## Step 3: Create the spec folder + `spec.md` | COMMENT |
| LOW | …/skills/packs/software-lifecycle/write-a-spec/SKILL.md | 150 | ## Step 4: Fill Goals and Non-goals | COMMENT |
| LOW | …/skills/packs/software-lifecycle/write-a-spec/SKILL.md | 160 | ## Step 5: Design | COMMENT |
| LOW | …/skills/packs/software-lifecycle/write-a-spec/SKILL.md | 173 | ## Step 6: Decision Log | COMMENT |
| LOW | …/skills/packs/software-lifecycle/write-a-spec/SKILL.md | 196 | ## Step 7: Open Questions | COMMENT |
| LOW | …/skills/packs/software-lifecycle/write-a-spec/SKILL.md | 218 | ## Step 8: Migration and Test plan | COMMENT |
| LOW | …/skills/packs/software-lifecycle/write-a-spec/SKILL.md | 258 | ## Step 10: Link and validate | COMMENT |
| LOW | …/skills/packs/software-lifecycle/write-a-spec/SKILL.md | 270 | ## Step 11: Recap | COMMENT |
| LOW | …assets/skills/project/references/ingest-and-sources.md | 9 | ## Step 0: Is this source worth preserving? | COMMENT |
| LOW⚡ | …assets/skills/project/references/ingest-and-sources.md | 183 | ## Step 3: Preserve the content faithfully | COMMENT |
| LOW⚡ | …assets/skills/project/references/ingest-and-sources.md | 193 | ## Step 4: Verify | COMMENT |
| LOW⚡ | …assets/skills/project/references/ingest-and-sources.md | 200 | ## Step 5: Re-ingest semantics (sha256 mismatch on a previously-ingested source) | COMMENT |
| LOW | …assets/skills/project/references/ingest-and-sources.md | 215 | ## Step 6: Discuss takeaways with the user (no file write) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …-plugins/no-comments/__fixtures__/must-fire.fixture.ts | 12 | // ──────────────────────────── section divider ──────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/registry/registry.test.ts | 719 | // ─── Schema-flip-drift meta-test (parallel to precedent #47) ───────── | COMMENT |
| MEDIUM | packages/core/src/registry/registry.test.ts | 719 | // ─── Schema-flip-drift meta-test (parallel to precedent #47) ───────── | COMMENT |
| MEDIUM | packages/app/tests/stress/selection-indicator.e2e.ts | 604 | // ── S13: Callout type-color inheritance (Precedent #31) ────────────────── | COMMENT |
| MEDIUM | packages/app/tests/stress/selection-indicator.e2e.ts | 604 | // ── S13: Callout type-color inheritance (Precedent #31) ────────────────── | COMMENT |
| MEDIUM | packages/server/src/server-observers.ts | 1523 | // ─── Settlement dispatcher (precedent #13(b)) ──────── | COMMENT |
| MEDIUM | packages/server/src/server-observers.ts | 1523 | // ─── Settlement dispatcher (precedent #13(b)) ──────── | COMMENT |
| MEDIUM | …ckages/native-config/src/mcp_edit_conformance_tests.rs | 29 | // ─── TOML-generic invariants ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/native-config/src/mcp_edit_conformance_tests.rs | 140 | // ─── OpenKnowledge-schema register / deregister / prune ────────────────────── | COMMENT |
| MEDIUM | .github/workflows/desktop-release.yml | 12 | # ├────────────┬──────────────┐ | COMMENT |
| MEDIUM | .github/workflows/desktop-release.yml | 17 | # └────────────┴──────────────┘ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …desktop/tests/support/pty-startup-trace.test-helper.ts | 423 | print(line: string): void; | CODE |
| HIGH | …sktop/tests/utility/pty-harness-os-observation.test.ts | 158 | print(line) { | CODE |
| HIGH | packages/desktop/src/main/desktop-uninstall-handoff.ts | 99 | elif create_result_profile && start_result_window --ok-uninstall-result "$1" "$2" "$3"; then | CODE |
| HIGH | …es/server/src/acp/held-install-registry.test-helper.ts | 87 | elif msg['method'] == 'session/new': | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 57 | ok init # scaffold the project + wire up your AI editors (Claude Code, Claude Desktop, Cursor, Codex, OpenCode, | CODE |
| MEDIUM | packages/server/src/tag-index.test.ts | 263 | idx.updateDocumentFromMarkdown('__template__/docs/my-template', '#scaffold note\n'); | CODE |
| MEDIUM | packages/server/src/init-project.ts | 104 | # exists as mental scaffolding, not as enforced filesystem structure. | COMMENT |
| MEDIUM | packages/cli/README.md | 21 | ok init # scaffold .ok/ and connect supported AI tools | CODE |
| MEDIUM | packages/native-config/src/mcp_edit.rs | 279 | // Drop the ` ` prefix the `v = ` scaffold left on the value, so it carries | COMMENT |
| MEDIUM | .github/workflows/release.yml | 16 | # Push trigger: event-driven on `push` to open-knowledge/main with a paths | COMMENT |
| MEDIUM | .github/workflows/release.yml | 107 | # event-driven betas and promote-stable route their npm publishes here. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …/perf/baselines/2026-05-01-post-leak-fix-baseline.json | 140 | "Anchored to merge commit that integrates origin/main containing PR #397 (TipTap+Yjs leak fix), PR #408 (perf-harnes | CODE |
| MEDIUM | packages/desktop/electron-builder.yml | 146 | # harness-config write routes through its toml_edit addon. Like | COMMENT |
| MEDIUM | packages/cli/src/commands/mcp-chain-validation.test.ts | 64 | '# command -v npx suppressed by test harness\n', | CODE |
| MEDIUM | .github/workflows/desktop-release.yml | 1023 | # The harness is CI tooling, not release content, so take it from the | COMMENT |
| MEDIUM | .github/workflows/desktop-release.yml | 1033 | # the harness still releases ungated rather than being newly gated by | COMMENT |
| MEDIUM | .github/workflows/desktop-release.yml | 2394 | # A skipped gate (ref predates the harness) is not a blocked release, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/app/tests/stress/tabs-component-strip.e2e.ts | 22 | ### Create a new project | COMMENT |
| MEDIUM | packages/desktop/src/main/path-install.test.ts | 545 | '# This file contains fish universal variable definitions.\n', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/desktop/scripts/smoke-terminal-package-cdp.py | 413 | def main() -> int: | CODE |
| LOW | packages/desktop/scripts/smoke-terminal-package-cdp.py | 200 | except Exception as error: | CODE |
| LOW | packages/desktop/scripts/smoke-terminal-package-cdp.py | 203 | except Exception as error: | CODE |
| LOW | packages/desktop/scripts/smoke-terminal-package-cdp.py | 382 | except Exception as error: | STRING |
| LOW | packages/desktop/scripts/smoke-terminal-package-cdp.py | 397 | except Exception as trace_error: | STRING |
| LOW | packages/desktop/scripts/smoke-terminal-package-cdp.py | 422 | except Exception as error: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/desktop/scripts/smoke-terminal-package-cdp.py | 153 | CODE | |
| LOW | packages/desktop/scripts/smoke-terminal-package-cdp.py | 222 | CODE |