Beautiful, AI-native markdown IDE and LLM wiki
This report presents the forensic synthetic code analysis of inkeep/open-knowledge, a TypeScript project with 3,679 GitHub stars. SynthScan v2.0 examined 1,483,189 lines of code across 5257 source files, recording 4829 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 4.5 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 4829 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/linux-repo/publish-linux-repo.sh | 50 | # ── apt ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/linux-repo/publish-linux-repo.sh | 108 | # ── rpm ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/health/parse-health-gate.ts | 37 | // ───────────────────────── Types ────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/health/parse-health-gate.ts | 83 | // ───────────────────────── Comparison (pure) ────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/health/parse-health-gate.ts | 123 | // ───────────────────────── Harvest (effectful) ──────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/health/parse-health-gate.ts | 164 | // ───────────────────────── Corpus loading ───────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/health/parse-health-gate.ts | 185 | // ───────────────────────── Baseline IO ──────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/health/parse-health-gate.ts | 197 | // ───────────────────────── Formatting ───────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/health/parse-health-gate.ts | 216 | // ───────────────────────── CLI ──────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/perf/regression-gate.test.ts | 281 | // ───────────────────────── Loader runtime validation ───────────────────── | COMMENT |
| MEDIUM⚡ | packages/core/tests/perf/markdown-bench.test.ts | 48 | // ───────────────────────── Gating ───────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/core/tests/perf/markdown-bench.test.ts | 54 | // ───────────────────────── Methodology constants ────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/core/tests/perf/markdown-bench.test.ts | 59 | // ───────────────────────── Stats helpers ────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/perf/markdown-bench.test.ts | 99 | // ───────────────────────── Runner metadata ──────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/perf/markdown-bench.test.ts | 167 | // ───────────────────────── Measurement ──────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/perf/markdown-bench.test.ts | 228 | // ───────────────────────── Test ─────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/perf/regression-gate.ts | 33 | // ───────────────────────── Types ────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/perf/regression-gate.ts | 137 | // ───────────────────────── Core comparison ──────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/perf/regression-gate.ts | 195 | // ───────────────────────── Formatting ───────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/perf/regression-gate.ts | 252 | // ───────────────────────── IO helpers ───────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/perf/regression-gate.ts | 323 | // ───────────────────────── CLI ──────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/shadow-repo-layout.ts | 487 | // ─── Checkpoint metadata + kind registry (re-exported) ─────────────────────── | COMMENT |
| MEDIUM | packages/core/src/shadow-repo-layout.ts | 505 | // ─── ok-actor: body line ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/shadow-repo-layout.ts | 763 | // ─── Subject-prefix scheme ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/shadow-repo-layout.ts | 804 | // ─── Change-note subject composition ───────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/checkpoint-kinds.ts | 433 | // ─── Checkpoint-kind registry ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/shadow-repo-layout.test.ts | 859 | // ─── auto-consolidation kind ─────────────────── | COMMENT |
| MEDIUM | packages/core/src/shadow-repo-layout.test.ts | 921 | // ─── parseOkActor / formatOkActor / formatWipSubject ───────────────── | COMMENT |
| MEDIUM | packages/core/src/shadow-repo-layout.test.ts | 1045 | // ─── writer_id + summaries consolidation (ok-contributors retirement) ──────── | COMMENT |
| MEDIUM | packages/core/src/shadow-repo-layout.test.ts | 1451 | // ─── Subject-prefix format helpers ────────────────────── | COMMENT |
| MEDIUM | packages/core/src/schema-invariant.test.ts | 26 | // ── Schema shape capture ──────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/schema-invariant.test.ts | 104 | // ── Snapshot loading ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/schema-invariant.test.ts | 113 | // ── Allowed narrowings ────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/schema-invariant.test.ts | 224 | // ── Tests ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/handoff/prompt-composer.test.ts | 913 | // ── composeTerminalBareLaunchPrompt — docked-terminal bare launch ─────────── | COMMENT |
| MEDIUM | packages/core/src/utils/youtube-embed.test.ts | 5 | // ── Recognized hosts → canonical /embed/<id> output ─────────────────── | COMMENT |
| MEDIUM | packages/core/src/utils/youtube-embed.test.ts | 28 | // ── Timestamp preservation ──────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/utils/youtube-embed.test.ts | 94 | // ── Rejected inputs → null ──────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/schemas/api/share.ts | 162 | // ─── Publish-to-GitHub wizard ──────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/schemas/api/share.ts | 317 | // ─── Shared branch-name validator ───────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/schemas/api/share.ts | 396 | // ─── Git auth failure classifier ────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/schemas/api/share.ts | 573 | // ─── Branch-info (share-link branch-awareness) ──────────────────────── | COMMENT |
| MEDIUM | packages/core/src/schemas/api/share.ts | 638 | // ─── Checkout (share-link branch-awareness) ─────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/schemas/api/share.ts | 746 | // ─── Target-status (share-link receive integrity) ───────────────────── | COMMENT |
| MEDIUM | packages/core/src/schemas/api/tags-search.ts | 348 | // ─── Skills (`/api/skill`, `/api/skills`) ──────────────────────── | COMMENT |
| MEDIUM | packages/core/src/schemas/api/pages.test.ts | 370 | // ─── Cluster C URN tokens ─────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/schemas/api/local-op.test.ts | 96 | // ─── Cluster H: sync + seed handlers ─────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/schemas/api/document-read.test.ts | 33 | // ─── read endpoint success schemas ──────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/extensions/list.ts | 37 | // ────────────────────────── Helpers ────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/extensions/list.ts | 254 | // ────────────────────────── List Node ────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/extensions/list.ts | 442 | // ────────────────────────── ListItem Node ────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/registry/types.ts | 13 | // ── PropDef discriminated union ────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/registry/types.ts | 194 | // ── SerializeContext + helper types ────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/registry/types.ts | 225 | // ── JsxComponentMeta — discriminated on `surface` ─────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/registry/registry.test.ts | 970 | // ─── Schema-flip-drift meta-test (parallel to precedent #47) ───────── | COMMENT |
| MEDIUM | packages/core/src/registry/registry.test.ts | 970 | // ─── Schema-flip-drift meta-test (parallel to precedent #47) ───────── | COMMENT |
| MEDIUM | packages/core/src/registry/built-ins.ts | 58 | // ── Callout ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/registry/built-ins.ts | 651 | // ── Accordion ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/registry/built-ins.ts | 656 | // ── Constraints (load-bearing) ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/src/registry/built-ins.ts | 672 | // ── Namespace collision ────────────────────────────────────────────────────── | COMMENT |
| 744 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/__fixtures__/no-split-suggestion-dispatch.fixture.tsx | 103 | export function negativeOutsideSuggestion(editor: FixtureEditor, range: FixtureRange): void { | CODE |
| LOW | …me-plugins/__fixtures__/microcopy-ellipsis.fixture.tsx | 14 | export function PositiveJsxAttributePlaceholder() { | CODE |
| LOW | …s/src/app/d/[encoded]/splash-download-split-button.tsx | 83 | export function SplashDownloadSplitButton({ | CODE |
| LOW | docs/src/lib/changelog-source.ts | 74 | export function buildChangelogSourceFiles( | CODE |
| LOW | docs/src/lib/download-targets.ts | 279 | export function downloadHrefForDetectedOs(cta: DownloadCta, os: DetectedOs): string { | CODE |
| LOW | docs/src/lib/share-contract-manifest.ts | 25 | export function buildShareContractManifest( | CODE |
| LOW | docs/src/lib/share-splash.ts | 160 | function parseCanonicalGitHubShareUrl(sharedUrl: string): CanonicalGitHubShareSource { | CODE |
| LOW | docs/src/lib/share-splash.ts | 230 | function assertCanonicalPathComponent(component: string): void { | CODE |
| LOW | docs/src/lib/share-splash.ts | 244 | function serializeCanonicalGitHubShareUrl(source: CanonicalGitHubShareSource): string { | CODE |
| LOW | packages/core/tests/perf/regression-gate.ts | 229 | export function checkMethodologyMismatches(baseline: Baseline, fresh: FreshResults): string[] { | CODE |
| LOW | packages/core/scripts/chrome-resolver.ts | 106 | export function resolveChromeTokensFromCss(cssPath: string): ChromeTokens { | CODE |
| LOW | packages/core/scripts/chrome-resolver.ts | 120 | 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 | 728 | export function okActorToShadowContributor(a: OkActorEntry): ShadowContributor { | CODE |
| LOW | packages/core/src/helper-bundle.ts | 78 | export function resolveHelperBundleBinary(parentExecPath: string): string { | CODE |
| LOW | packages/core/src/checkpoint-kinds.ts | 732 | export function isChainAnchorCheckpointKind(kind: CheckpointKind | null | undefined): boolean { | CODE |
| LOW | packages/core/src/terminal-layout.ts | 30 | export function normalizeTerminalPlacement(value: unknown): TerminalPlacement { | CODE |
| LOW | packages/core/src/terminal-layout.ts | 34 | export function normalizeTerminalRightWidth(value: unknown): number { | CODE |
| LOW | packages/core/src/desktop-bridge.ts | 1327 | export function isTerminalShellNoticeReason(value: unknown): value is TerminalShellNoticeReason { | CODE |
| LOW | packages/core/src/desktop-bridge.ts | 1345 | export function isTerminalSupportFileNoticeReason( | CODE |
| LOW | packages/core/src/y-prosemirror-patch.test.ts | 164 | function resolveInstalledPackageDir(packageName: string): string { | CODE |
| LOW | packages/core/src/metrics/parse-health.ts | 180 | export function incrementWholeDocFallback(): void { | CODE |
| LOW | packages/core/src/metrics/parse-health.ts | 188 | export function incrementWholeDocBudgetFallback(): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 201 | export function incrementJsxRenderFailure(component: string): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 206 | export function incrementJsxAutoConvertFailed(component: string): void { | CODE |
| LOW⚡ | packages/core/src/metrics/parse-health.ts | 211 | export function incrementJsxAutoConvertSucceeded(component: string): void { | CODE |
| LOW | packages/core/src/metrics/parse-health.ts | 241 | export function incrementJsxStuckCopyFailed(component: string): void { | CODE |
| LOW | packages/core/src/metrics/parse-health.ts | 246 | export function incrementJsxStuckDeleteFailed(component: string): void { | CODE |
| LOW | packages/core/src/metrics/parse-health.ts | 257 | export function incrementJsxPopoverCloseRestoreFailed(component: string): void { | CODE |
| LOW | packages/core/src/metrics/parse-health.ts | 263 | export function incrementJsxKeyboardDeleteFailed(component: string): void { | CODE |
| LOW | packages/core/src/metrics/parse-health.ts | 275 | export function incrementBlockGripClickSelectFailed(nodeType: string): void { | CODE |
| LOW | packages/core/src/metrics/parse-health.ts | 288 | export function incrementJsxArrowNodeSelectFailed( | CODE |
| LOW | packages/core/src/metrics/parse-health.ts | 302 | export function incrementYpsMismatchBlock(): void { | CODE |
| LOW | packages/core/src/metrics/parse-health.ts | 307 | export function incrementYpsMismatchInline(): void { | CODE |
| LOW | packages/core/src/types/awareness.ts | 142 | export function isPresenceSentinelDocName(name: string | null | undefined): boolean { | CODE |
| LOW | packages/core/src/sharing/candidate-selection.ts | 500 | function compareCandidatesForTiebreak(a: Candidate, b: Candidate): number { | CODE |
| LOW | packages/core/src/sharing/receive-flow.ts | 107 | 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 |
| LOW | packages/core/src/sharing/share-url.ts | 202 | export function projectCanonicalGitHubShareTarget( | CODE |
| LOW | packages/core/src/sharing/share-url.ts | 270 | function assertCanonicalGitHubHost(host: string): void { | CODE |
| LOW | packages/core/src/sharing/share-url.ts | 302 | function decodeCanonicalPathComponent( | CODE |
| LOW | packages/core/src/sharing/share-url.ts | 311 | function decodeCanonicalRepositoryComponent( | CODE |
| LOW | packages/core/src/sharing/share-url.ts | 333 | function assertDecodedPathComponent(component: string, role: string): void { | CODE |
| LOW | packages/core/src/sharing/share-url.ts | 347 | function assertDecodedRepositoryComponent(component: string, role: 'owner' | 'repository'): void { | CODE |
| LOW | packages/core/src/config/schema.ts | 164 | export function normalizeAttachmentFolderPath(value: string): string { | CODE |
| LOW | packages/core/src/config/schema.ts | 169 | export function isValidAttachmentFolderPath(value: string): boolean { | CODE |
| LOW | packages/core/src/config/auto-sync-mode.ts | 101 | export function resolveEffectiveAutoSyncMode(input: { | CODE |
| LOW | packages/core/src/config/resolve-server-config.ts | 126 | export function resolveServerRuntimeConfig(config: Config | undefined): ServerRuntimeConfig { | CODE |
| LOW | packages/core/src/config/yaml-patch.ts | 23 | function ensureCollectionAncestors( | CODE |
| LOW | packages/core/src/config/committed-scope-diagnostics.ts | 68 | export function detectCommittedProjectLocalKeys( | CODE |
| LOW | packages/core/src/config/committed-scope-diagnostics.ts | 111 | export function formatIgnoredCommittedKey(key: IgnoredCommittedKey): string { | CODE |
| LOW | packages/core/src/handoff/prompt-composer.ts | 172 | export function composeThreadBareLaunchPrompt(relativePath: string | null): string { | CODE |
| LOW | packages/core/src/handoff/prompt-composer.ts | 198 | export function composeTerminalBareLaunchPrompt(relativePath: string | null): string { | CODE |
| LOW | packages/core/src/handoff/prompt-composer.ts | 716 | function fitInstructionForDirective( | CODE |
| LOW | packages/core/src/handoff/prompt-composer.ts | 1153 | function assembleDocSelectionPrompt( | CODE |
| 1702 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | oxlint.config.ts | 41 | export default defineConfig({ | COMMENT |
| LOW | pnpm-workspace.yaml | 21 | # electron ships no install script of its own as of 43 — it fetches its platform | COMMENT |
| LOW | pnpm-workspace.yaml | 41 | # @excalidraw/mermaid-to-excalidraw pins it exactly at | COMMENT |
| LOW | …ins/__fixtures__/no-demoted-dialog-confirm.fixture.tsx | 1 | // FIXTURE — drives `no-demoted-dialog-confirm.test.ts` via shell-out to | COMMENT |
| LOW | …/__fixtures__/no-roundtrip-identity-oracle.fixture.tsx | 61 | // contract, NOT a leak. No `serialize(parse(...))`, two different inputs. | COMMENT |
| LOW | …__fixtures__/no-uninstall-forbidden-import.fixture.tsx | 1 | // FIXTURE — drives `no-uninstall-forbidden-import.test.ts` via shell-out to | COMMENT |
| LOW | …fixtures__/no-raw-html-interactive-element.fixture.tsx | 1 | // FIXTURE — drives `no-raw-html-interactive-element.test.ts` via shell-out | COMMENT |
| LOW | …gins/__fixtures__/cst-pm-handler-todo-stub.fixture.tsx | 1 | // FIXTURE - drives `cst-pm-handler-todo-stub.test.ts` via shell-out | COMMENT |
| LOW | …/__fixtures__/no-unportaled-editor-content.fixture.tsx | 1 | // FIXTURE — drives `no-unportaled-editor-content.test.ts` 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.test.ts` via | COMMENT |
| LOW | …tures__/path-conditional-map-driven-origin.fixture.tsx | 1 | // FIXTURE — drives `path-conditional-map-driven-origin.test.ts` via shell-out | COMMENT |
| LOW | …/__fixtures__/require-windowshide-on-spawn.fixture.tsx | 1 | // FIXTURE — drives `require-windowshide-on-spawn.test.ts` via shell-out to | COMMENT |
| LOW | …__fixtures__/require-utf8-multipart-parser.fixture.tsx | 1 | // FIXTURE - drives `require-utf8-multipart-parser.test.ts` via shell-out to | COMMENT |
| LOW | …fixtures__/no-unwrapped-user-facing-string.fixture.tsx | 1 | // FIXTURE — drives `no-unwrapped-user-facing-string.test.ts` via shell-out to | COMMENT |
| LOW | docs/scripts/generate-brand-assets.ts | 1 | import { mkdirSync, readFileSync, writeFileSync } from 'node:fs'; | COMMENT |
| LOW | docs/src/lib/brand-assets.ts | 1 | // The /brand page and downloadable brand kit now live in the marketing app | COMMENT |
| LOW | docs/src/lib/ok-wordmark.data.ts | 1 | // Generated from public/ok-wordmark.svg — do not hand-edit. | COMMENT |
| LOW | scripts/check-knip-clean.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/check-i18n-drift.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/husky-prepare.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/husky-prepare.sh | 21 | # This guard skips husky entirely in the monorepo case so the parent's | COMMENT |
| LOW | scripts/check-schema-snapshot-clean.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/check-husky-prepare-guard.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/linux-repo/publish-linux-repo.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/linux-repo/publish-linux-repo.sh | 21 | # rpm/<channel>/{x86_64,aarch64}/*.rpm + repodata/ (repomd.xml.asc signed) | COMMENT |
| LOW | packages/core/src/checkpoint-kinds.ts | 81 | // The derive-timing defer guard reached its drain-count bound and | COMMENT |
| LOW | packages/core/src/checkpoint-kinds.ts | 121 | | { | COMMENT |
| LOW | packages/core/src/checkpoint-kinds.ts | 141 | // e2fsck. Both metadata fields are content-free: `atRiskLines` counts the | COMMENT |
| LOW | packages/core/src/checkpoint-kinds.ts | 161 | // metadata fields are content-free counts. | COMMENT |
| LOW | packages/core/src/checkpoint-kinds.ts | 181 | metadata: { diskBytes: number; discardedBytes: number }; | COMMENT |
| LOW | packages/core/src/shadow-repo-layout.test.ts | 461 | // EACCES on the .git path itself (e.g., parent directory denies read / | COMMENT |
| LOW | packages/core/src/shadow-repo-layout.test.ts | 1561 | COMMENT | |
| LOW | packages/core/src/schema-invariant.test.ts | 141 | // (registered inline descriptors carry structured attrs) — a future PR that | COMMENT |
| LOW | packages/core/src/schema-invariant.test.ts | 161 | { | COMMENT |
| LOW | packages/core/src/schema-invariant.test.ts | 261 | expect(attrShape.hasDefault).toBe(true); | COMMENT |
| LOW | packages/core/src/schema-invariant.test.ts | 281 | // mechanical close on the same-commit escape hatch. A developer who | COMMENT |
| LOW | packages/core/src/desktop-bridge.ts | 221 | // server-hosted and the panel is available outside the desktop PTY host. | COMMENT |
| LOW | packages/core/src/y-prosemirror-patch.test.ts | 341 | test('contains the ymark: mark-encoding (not upstream mark-drop)', () => { | COMMENT |
| LOW | packages/core/src/sharing/candidate-selection.test.ts | 521 | test('sole ghost candidate (gitDirKind absent, no .ok/config.yml) is never crowned a branch-match', async () => { | COMMENT |
| LOW | packages/core/src/util/spawn-error-log-open.ts | 21 | } | COMMENT |
| LOW | packages/core/src/config/schema.ts | 181 | COMMENT | |
| LOW | packages/core/src/config/schema.ts | 221 | message: | COMMENT |
| LOW | packages/core/src/config/schema.ts | 241 | // nested `<folder>/.ok/frontmatter.yml` files — sparse, opt-in, lazy-create | COMMENT |
| LOW | packages/core/src/config/schema.ts | 261 | // | COMMENT |
| LOW | packages/core/src/config/schema.ts | 281 | // full rationale sits on the fields themselves. | COMMENT |
| LOW | packages/core/src/config/schema.ts | 321 | defaultScope: 'user', | COMMENT |
| LOW | packages/core/src/config/schema.ts | 581 | description: | COMMENT |
| LOW | packages/core/src/config/schema.ts | 621 | // project-local binding — no special HTTP endpoint. | COMMENT |
| LOW | packages/core/src/config/schema.ts | 681 | "When sync is paused (autoSync.mode 'off') after having been enabled, the active mode to resume into ('follo | COMMENT |
| LOW | packages/core/src/config/schema.ts | 761 | // explicit `false` disables it (`null`/absent both read as the default-on | COMMENT |
| LOW | packages/core/src/config/schema.ts | 821 | }) | COMMENT |
| LOW | packages/core/src/config/schema.ts | 1161 | semantic: { | COMMENT |
| LOW | packages/core/src/config/schema.ts | 1261 | // advisory warnings, so a rule is only ever on or off. Deliberately | COMMENT |
| LOW | packages/core/src/config/schema.ts | 1381 | // The canonical server surface: one listener whose local vs hosted posture | COMMENT |
| LOW | packages/core/src/config/schema.ts | 1401 | // / `idleShutdown` are PROJECT-LOCAL personal workflow, like the sidebar | COMMENT |
| LOW | packages/core/src/config/bind-config-doc.ts | 281 | let doc = parseDocument(currentContent); | COMMENT |
| LOW | packages/core/src/config/schema.test.ts | 361 | // default === true. With both null, sync is OFF and the engine never pushes. | COMMENT |
| LOW | packages/core/src/config/field-registry.test.ts | 201 | 'editor.wordWrap', | COMMENT |
| LOW | packages/core/src/config/field-registry.test.ts | 221 | // project-shared (committed `config.yml`), so a user-global override | COMMENT |
| 1779 more matches not shown… | ||||
| 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 | scripts/husky-prepare.sh | 29 | # `_/` scaffolding and the chmod would silently no-op, leaving cruft. | COMMENT |
| MEDIUM | scripts/husky-prepare.sh | 54 | # husky has nothing to register. Skip to avoid empty scaffolding. | COMMENT |
| MEDIUM | scripts/check-husky-prepare-guard.sh | 116 | # husky setup to avoid creating empty `_/` scaffolding. | COMMENT |
| MEDIUM | packages/core/src/handoff/prompt-composer.ts | 328 | // body ends in a blockquoted brief, an `@`-mention line, or the scaffold | COMMENT |
| MEDIUM | packages/core/src/handoff/prompt-composer.test.ts | 407 | // existing-repo empty brief: neutral, no scaffold-from-scratch directive. | COMMENT |
| MEDIUM | packages/app/tests/integration/bridge-matrix.test.ts | 359 | // Agent undo/redo endpoints were removed (broken scaffold removal). | COMMENT |
| MEDIUM | …ests/integration/conflict-aware-write-surfaces.test.ts | 426 | // Seed the .ok scaffold + git so createTestServer's ensureProjectGit is a no-op. | COMMENT |
| MEDIUM | …ests/integration/conflict-aware-write-surfaces.test.ts | 653 | // Real git + .ok/ scaffold so SyncEngine constructs without bailing. | COMMENT |
| MEDIUM | packages/app/src/components/SeedDialog.tsx | 151 | // typing doesn't strobe "Computing scaffold plan…" between keystrokes. | COMMENT |
| MEDIUM | packages/app/src/components/CreateProjectDialog.tsx | 631 | // pre-fill — the scaffold still lands at the project root unless the user | COMMENT |
| MEDIUM | …kages/app/src/components/CreatedItemsList.dom.test.tsx | 54 | // Subfolder scaffold into `brain/`: the plan creates the parent folder plus | COMMENT |
| MEDIUM | …kages/app/src/components/CreatedItemsList.dom.test.tsx | 109 | // Re-scaffold where the folder already exists: only its templates are in | COMMENT |
| MEDIUM | packages/app/src/components/ProjectSwitcher.tsx | 210 | // dialog drives the full scaffold + open-in-new-window flow itself. | COMMENT |
| MEDIUM | packages/desktop/electron-builder.yml | 332 | # smoke path for M2 scaffolding before cert procurement completes. | COMMENT |
| MEDIUM | …ckages/desktop/src/main/worktree-setup-inherit.test.ts | 143 | // Full `.ok/` scaffold parity with a fresh setup. | COMMENT |
| MEDIUM | packages/desktop/src/main/ok-init.ts | 121 | // Coalesce concurrent callers onto the same scaffold. Their result is | COMMENT |
| MEDIUM | packages/desktop/src/main/create-new-project.test.ts | 801 | // pre-fills the dialog's subfolder input — the scaffold itself lands at the | COMMENT |
| MEDIUM | packages/desktop/src/main/create-new-project.test.ts | 833 | // skipped — the project is valid but carries no pack scaffold. | COMMENT |
| MEDIUM | packages/desktop/src/main/worktree-service.ts | 237 | // Inherit the root project's OK setup (`.ok/` scaffold + editor/MCP wiring) | COMMENT |
| MEDIUM | packages/desktop/src/main/index.ts | 2397 | // create-new's own pre-scaffold `discoverProject` call is deliberately not | COMMENT |
| MEDIUM | packages/desktop/src/main/index.ts | 6994 | // for adjusting content scope at scaffold time, so this telemetry | COMMENT |
| MEDIUM | packages/desktop/src/main/index.ts | 7019 | // scaffold branch won't re-fire. | COMMENT |
| MEDIUM | packages/desktop/src/main/folder-admission.ts | 260 | // never starts, rather than surfacing as a mid-scaffold writer error. | COMMENT |
| MEDIUM | packages/desktop/src/main/folder-admission.ts | 276 | // standalone treatment lets the server-side ok-init endpoint scaffold | COMMENT |
| MEDIUM | packages/server/src/api-extension.ok-init.test.ts | 213 | // The containment gate fires before `initContent` — no scaffold written. | COMMENT |
| MEDIUM | packages/server/src/home-project-root.test.ts | 78 | // `.ok/` at home is the user-global store; a scaffold would drop a project | COMMENT |
| MEDIUM | packages/server/src/project-git.ts | 253 | // and every scaffold entry point reaches here. Refused before the `.git` | COMMENT |
| MEDIUM | packages/server/src/boot.test.ts | 133 | // scaffold at projectDir only and confirm boot succeeds. | COMMENT |
| MEDIUM | packages/server/src/boot.test.ts | 163 | // preflight is anchored to `projectDir`, so a config-shaped scaffold under | COMMENT |
| MEDIUM | packages/server/src/tag-index.test.ts | 263 | idx.updateDocumentFromMarkdown('__template__/docs/my-template', '#scaffold note\n'); | CODE |
| MEDIUM | packages/server/src/boot.ts | 684 | // Pre-createServer scaffold hook. CLI passes initContent; desktop omits. | COMMENT |
| MEDIUM | packages/server/src/api-extension.ts | 9808 | // anchor pointing outside home can't slip a scaffold write past the | COMMENT |
| MEDIUM | packages/server/src/api-extension.ts | 9876 | // (e.g., a checkout flow racing scaffold writes). | COMMENT |
| MEDIUM | packages/server/src/api-extension.ts | 20434 | // otherwise create-empty (scaffold the skeleton so a freshly-picked | COMMENT |
| MEDIUM | packages/server/src/git-preflight-boot.test.ts | 265 | // instead, we point `contentDir` at a directory missing the .ok scaffold | COMMENT |
| MEDIUM | packages/server/src/git-preflight-boot.test.ts | 306 | // Boot reached the next gate (config scaffold missing). That proves | COMMENT |
| MEDIUM | packages/server/src/init-project.test.ts | 140 | // The folder-metadata explainer block was removed from the scaffold too. | COMMENT |
| MEDIUM | packages/server/src/init-project.test.ts | 185 | // `.okignore`) as a symlink could either (a) append OK scaffold lines to a | COMMENT |
| MEDIUM | packages/server/src/init-project.test.ts | 187 | // (b) plant the OK scaffold contents at an arbitrary path via the | COMMENT |
| MEDIUM | packages/server/src/init-project.test.ts | 309 | // may append temporary repo-local exclusions BELOW the scaffold block (those | COMMENT |
| MEDIUM | packages/server/src/init-project.test.ts | 310 | // are dogfood-only and must never be folded into the template — the scaffold | COMMENT |
| MEDIUM | packages/server/src/init-project.ts | 157 | # exists as mental scaffolding, not as enforced filesystem structure. | COMMENT |
| MEDIUM⚡ | packages/server/src/init-project.ts | 346 | // than per-caller because this is where all five scaffold entry points meet. | COMMENT |
| MEDIUM⚡ | packages/server/src/init-project.ts | 356 | // .gitignore: merge-on-upgrade — append missing scaffold entries to an | COMMENT |
| MEDIUM⚡ | packages/server/src/init-project.ts | 357 | // existing file rather than skipping outright. Today's scaffold is a single | COMMENT |
| MEDIUM | packages/server/src/seed/apply.ts | 185 | // scaffold conformant is not delivering what it promised. What makes that | COMMENT |
| MEDIUM | packages/server/src/seed/starter.ts | 1603 | // The scaffold is OKF-conformant by construction, and nothing keeps it that | COMMENT |
| MEDIUM | packages/server/src/seed/apply.test.ts | 296 | // its own scaffold conformant is not delivering what it promised, so the | COMMENT |
| MEDIUM | packages/server/src/seed/plan.ts | 122 | // Each gets independent existence checks so a partial scaffold (e.g. user | COMMENT |
| MEDIUM | packages/cli/README.md | 21 | ok init # scaffold .ok/ and connect supported AI tools | CODE |
| MEDIUM | packages/cli/src/cli.ts | 220 | // seed command — stateless content-scaffold, no config needed | COMMENT |
| MEDIUM | packages/cli/src/commands/start.test.ts | 309 | // scaffold one for us — seed manually. | COMMENT |
| MEDIUM | packages/cli/src/commands/start.test.ts | 1033 | // bootStartServer — no scaffold when .ok/config.yml is absent | COMMENT |
| MEDIUM | packages/cli/src/commands/start.test.ts | 1042 | // Intentionally no .ok/config.yml — the test asserts ok start refuses to scaffold. | COMMENT |
| MEDIUM | packages/cli/src/commands/clone.ts | 563 | // Auto-init: scaffold .ok/ unconditionally. `runInit` is idempotent | COMMENT |
| MEDIUM | packages/cli/src/commands/init.ts | 2435 | // (excludes the scaffold-failure early return, where no config exists); | COMMENT |
| MEDIUM | packages/cli/src/commands/init.test.ts | 173 | // scaffold: config-only, no content subdirs. | COMMENT |
| MEDIUM | packages/cli/src/commands/init.test.ts | 177 | // created lazily by writers — not part of the scaffold. | COMMENT |
| MEDIUM | packages/cli/src/commands/init.test.ts | 331 | // But the .ok/ config scaffold IS created | COMMENT |
| 10 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/core/src/config/write-config-patch.ts | 187 | // Step 0: scope-violation check. Catches misrouted writes BEFORE any | COMMENT |
| LOW | packages/core/src/config/write-config-patch.ts | 240 | // Step 1: read current file content (or empty for lazy first-write). | COMMENT |
| LOW | packages/core/src/config/write-config-patch.ts | 255 | // Step 2: parse the existing YAML (or empty document for first-write). | COMMENT |
| LOW⚡ | packages/core/src/config/write-config-patch.ts | 280 | // Step 3: apply the patch to the Document. | COMMENT |
| LOW⚡ | packages/core/src/config/write-config-patch.ts | 283 | // Step 4: serialize to JS for safeParse (validation), and to string for | COMMENT |
| LOW | packages/core/src/config/write-config-patch.ts | 309 | // Step 5: serialize the doc to YAML. For lazy first-write, prepend the | COMMENT |
| LOW | packages/core/src/config/write-config-patch.ts | 323 | // Step 6: ensure parent directory exists, then atomic write. | COMMENT |
| LOW⚡ | packages/app/tests/integration/bridge-matrix.test.ts | 755 | // Step 1: Baseline via WYSIWYG | COMMENT |
| LOW⚡ | packages/app/tests/integration/bridge-matrix.test.ts | 760 | // Step 2: Server-side agent write via HTTP API (appends content to Y.Text | COMMENT |
| LOW | packages/app/tests/integration/bridge-matrix.test.ts | 772 | // Step 3: Client's user appends via WYSIWYG — an incremental edit, | COMMENT |
| LOW | packages/app/tests/integration/bridge-matrix.test.ts | 784 | // Step 4: Both user edit and agent content should be present | COMMENT |
| LOW | …sts/integration/vite-worker-cachedir-isolation.test.ts | 286 | // Step 1: resolve the per-worker cacheDir identifier from the | COMMENT |
| LOW | …sts/integration/vite-worker-cachedir-isolation.test.ts | 318 | // Step 2: enumerate the teardown sites. A teardown site is a removal | COMMENT |
| LOW | …sts/integration/vite-worker-cachedir-isolation.test.ts | 352 | // Step 3: require each contentDir teardown to be accompanied by a | COMMENT |
| LOW⚡ | …kages/app/tests/perf/scenarios/m3-defer-mount-sweep.ts | 147 | // Step 1: navigate to root to discard any in-memory editor cache. | COMMENT |
| LOW⚡ | …kages/app/tests/perf/scenarios/m3-defer-mount-sweep.ts | 151 | // Step 2: cold-load the target doc and measure. | COMMENT |
| LOW | packages/app/tests/perf/scenarios/warm-switch-cached.ts | 68 | // Step 1: warm up docA + docB | COMMENT |
| LOW | packages/app/tests/perf/scenarios/warm-switch-cached.ts | 92 | // Step 2: force Activity-mount eviction of docA | COMMENT |
| LOW | packages/app/tests/perf/scenarios/warm-switch-cached.ts | 105 | // Step 3: navigate back to docA — V2 cache should reparent, not rebuild. | COMMENT |
| LOW⚡ | …ckages/app/tests/stress/observer-a-multi-client.e2e.ts | 109 | // Step 1: user on Client A starts typing into the editor (focus + position cursor | COMMENT |
| LOW⚡ | …ckages/app/tests/stress/observer-a-multi-client.e2e.ts | 114 | // Step 2: agent writes additional content to the same line via server-side API. | COMMENT |
| LOW | …ckages/app/tests/stress/observer-a-multi-client.e2e.ts | 136 | // Step 3: Client A's user types at the end of the line (which now includes the | COMMENT |
| LOW⚡ | packages/app/tests/stress/qa-sidebar-responsive.e2e.ts | 961 | // Step 1: pin open at narrow. | COMMENT |
| LOW⚡ | packages/app/tests/stress/qa-sidebar-responsive.e2e.ts | 965 | // Step 2: resize wide. Above slot is absent → smart default opens. | COMMENT |
| LOW⚡ | packages/app/tests/stress/qa-sidebar-responsive.e2e.ts | 968 | // Step 3: explicit collapse at wide → above slot recorded; below untouched. | COMMENT |
| LOW⚡ | packages/app/tests/stress/qa-sidebar-responsive.e2e.ts | 974 | // Step 4: resize back to narrow → below slot honored → right reopens. | COMMENT |
| LOW⚡ | packages/app/tests/stress/qa-sidebar-responsive.e2e.ts | 977 | // Step 5: both slots still coexist (the wide-visit's collapse did not | COMMENT |
| LOW | packages/app/src/server/agent-sim.ts | 221 | // Step 1: Read current document | COMMENT |
| LOW | packages/app/src/server/agent-sim.ts | 237 | // Step 2: Seed if empty or missing recognizable sections | COMMENT |
| LOW | packages/app/src/server/agent-sim.ts | 263 | // Step 3: Run patch sequence | COMMENT |
| LOW⚡ | packages/app/src/server/agent-sim.ts | 307 | // Step 1: Read file from disk | COMMENT |
| LOW⚡ | packages/app/src/server/agent-sim.ts | 315 | // Step 2: Seed via HTTP API if empty or missing patch targets | COMMENT |
| LOW | packages/app/src/server/agent-sim.ts | 334 | // Step 3: Run edit sequence directly on disk | COMMENT |
| LOW | packages/app/src/server/agent-flow.test.ts | 70 | // Step 1: Seed document with initial content | COMMENT |
| LOW | packages/app/src/server/agent-flow.test.ts | 84 | // Step 2: Agent writes another paragraph (simulates agent writing while doc is open) | COMMENT |
| LOW⚡ | packages/app/src/server/agent-flow.test.ts | 95 | // Step 3: Toggle to source — serialize Y.Doc → markdown | COMMENT |
| LOW⚡ | packages/app/src/server/agent-flow.test.ts | 104 | // Step 4: Simulate user editing in source mode — add a line | COMMENT |
| LOW⚡ | packages/app/src/server/agent-flow.test.ts | 107 | // Step 5: Toggle back to WYSIWYG — parse markdown → updateYFragment | COMMENT |
| LOW | packages/app/src/server/agent-flow.test.ts | 118 | // Step 6: Verify — serialize again to check all content survived | COMMENT |
| LOW⚡ | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 613 | // Step 1: type a name → block-nested banner appears. This is the | COMMENT |
| LOW⚡ | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 622 | // Step 2: install a MutationObserver on the banner's parent (subtree: | COMMENT |
| LOW⚡ | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 642 | // Step 3: type more characters. The probe re-runs against the new | COMMENT |
| LOW⚡ | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 649 | // Step 4: wait — event-driven — for the debounced re-probe to fire. | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 660 | // Step 5: wait for cascade to re-settle to block-nested (banner | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 708 | // Step 1: type a name → cascade settles to 'free' (initial nullable | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 719 | // Step 2: install a controllable deferred on findEnclosingGitRoot so | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 734 | // Step 3: edit the name — bumps deps → cascade useEffect re-runs → | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 756 | // Step 4: resolve the deferred → probe settles → cascade re-renders | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 808 | // Step 1: type a name → cascade probes → settles to confirm-git. | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 819 | // Step 2: capture the polling callback. The polling setInterval | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 831 | // Step 3: install a controllable deferred on findEnclosingGitRoot | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 843 | // Step 4: trigger a fresh probe via name edit → cascade-probe | COMMENT |
| LOW⚡ | packages/app/src/editor/provider-pool.test.ts | 3650 | // Step 1: open A, let its persistence write to IDB, close it. | COMMENT |
| LOW⚡ | packages/app/src/editor/provider-pool.test.ts | 3657 | // Step 2: rename A → B. The fix calls closeAndClearPersistence on | COMMENT |
| LOW⚡ | packages/app/src/editor/provider-pool.test.ts | 3666 | // Step 3: open B (the new location), let it persist, close it. | COMMENT |
| LOW⚡ | packages/app/src/editor/provider-pool.test.ts | 3673 | // Step 4: rename B → A (the move-back). This is the critical step: | COMMENT |
| LOW⚡ | packages/app/src/editor/provider-pool.test.ts | 3682 | // Step 5: open A again. With the IDB cleared in step 4, the new | COMMENT |
| LOW | packages/app/src/editor/extensions/mark-identity.ts | 112 | // Step 1: map previous ranges forward. | COMMENT |
| LOW | packages/app/src/editor/extensions/mark-identity.ts | 134 | // Step 2: walk new doc, match spans to mapped ranges. | COMMENT |
| LOW | …r/assets/skills/packs/knowledge-base/research/SKILL.md | 78 | ## Step 0: Create workflow checkpoint tasks | COMMENT |
| 52 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/core/src/config/write-config-patch.ts | 187 | // Step 0: scope-violation check. Catches misrouted writes BEFORE any | COMMENT |
| LOW | packages/core/src/config/write-config-patch.ts | 240 | // Step 1: read current file content (or empty for lazy first-write). | COMMENT |
| LOW | packages/core/src/config/write-config-patch.ts | 255 | // Step 2: parse the existing YAML (or empty document for first-write). | COMMENT |
| LOW⚡ | packages/core/src/config/write-config-patch.ts | 280 | // Step 3: apply the patch to the Document. | COMMENT |
| LOW⚡ | packages/core/src/config/write-config-patch.ts | 283 | // Step 4: serialize to JS for safeParse (validation), and to string for | COMMENT |
| LOW | packages/core/src/config/write-config-patch.ts | 309 | // Step 5: serialize the doc to YAML. For lazy first-write, prepend the | COMMENT |
| LOW | packages/core/src/config/write-config-patch.ts | 323 | // Step 6: ensure parent directory exists, then atomic write. | COMMENT |
| LOW⚡ | packages/app/tests/integration/bridge-matrix.test.ts | 755 | // Step 1: Baseline via WYSIWYG | COMMENT |
| LOW⚡ | packages/app/tests/integration/bridge-matrix.test.ts | 760 | // Step 2: Server-side agent write via HTTP API (appends content to Y.Text | COMMENT |
| LOW | packages/app/tests/integration/bridge-matrix.test.ts | 772 | // Step 3: Client's user appends via WYSIWYG — an incremental edit, | COMMENT |
| LOW | packages/app/tests/integration/bridge-matrix.test.ts | 784 | // Step 4: Both user edit and agent content should be present | COMMENT |
| LOW | …sts/integration/vite-worker-cachedir-isolation.test.ts | 286 | // Step 1: resolve the per-worker cacheDir identifier from the | COMMENT |
| LOW | …sts/integration/vite-worker-cachedir-isolation.test.ts | 318 | // Step 2: enumerate the teardown sites. A teardown site is a removal | COMMENT |
| LOW | …sts/integration/vite-worker-cachedir-isolation.test.ts | 352 | // Step 3: require each contentDir teardown to be accompanied by a | COMMENT |
| LOW⚡ | …kages/app/tests/perf/scenarios/m3-defer-mount-sweep.ts | 147 | // Step 1: navigate to root to discard any in-memory editor cache. | COMMENT |
| LOW⚡ | …kages/app/tests/perf/scenarios/m3-defer-mount-sweep.ts | 151 | // Step 2: cold-load the target doc and measure. | COMMENT |
| LOW | packages/app/tests/perf/scenarios/warm-switch-cached.ts | 68 | // Step 1: warm up docA + docB | COMMENT |
| LOW | packages/app/tests/perf/scenarios/warm-switch-cached.ts | 92 | // Step 2: force Activity-mount eviction of docA | COMMENT |
| LOW | packages/app/tests/perf/scenarios/warm-switch-cached.ts | 105 | // Step 3: navigate back to docA — V2 cache should reparent, not rebuild. | COMMENT |
| LOW⚡ | …ckages/app/tests/stress/observer-a-multi-client.e2e.ts | 109 | // Step 1: user on Client A starts typing into the editor (focus + position cursor | COMMENT |
| LOW⚡ | …ckages/app/tests/stress/observer-a-multi-client.e2e.ts | 114 | // Step 2: agent writes additional content to the same line via server-side API. | COMMENT |
| LOW | …ckages/app/tests/stress/observer-a-multi-client.e2e.ts | 136 | // Step 3: Client A's user types at the end of the line (which now includes the | COMMENT |
| LOW⚡ | packages/app/tests/stress/qa-sidebar-responsive.e2e.ts | 961 | // Step 1: pin open at narrow. | COMMENT |
| LOW⚡ | packages/app/tests/stress/qa-sidebar-responsive.e2e.ts | 965 | // Step 2: resize wide. Above slot is absent → smart default opens. | COMMENT |
| LOW⚡ | packages/app/tests/stress/qa-sidebar-responsive.e2e.ts | 968 | // Step 3: explicit collapse at wide → above slot recorded; below untouched. | COMMENT |
| LOW⚡ | packages/app/tests/stress/qa-sidebar-responsive.e2e.ts | 974 | // Step 4: resize back to narrow → below slot honored → right reopens. | COMMENT |
| LOW⚡ | packages/app/tests/stress/qa-sidebar-responsive.e2e.ts | 977 | // Step 5: both slots still coexist (the wide-visit's collapse did not | COMMENT |
| LOW | packages/app/src/server/agent-sim.ts | 221 | // Step 1: Read current document | COMMENT |
| LOW | packages/app/src/server/agent-sim.ts | 237 | // Step 2: Seed if empty or missing recognizable sections | COMMENT |
| LOW | packages/app/src/server/agent-sim.ts | 263 | // Step 3: Run patch sequence | COMMENT |
| LOW⚡ | packages/app/src/server/agent-sim.ts | 307 | // Step 1: Read file from disk | COMMENT |
| LOW⚡ | packages/app/src/server/agent-sim.ts | 315 | // Step 2: Seed via HTTP API if empty or missing patch targets | COMMENT |
| LOW | packages/app/src/server/agent-sim.ts | 334 | // Step 3: Run edit sequence directly on disk | COMMENT |
| LOW | packages/app/src/server/agent-flow.test.ts | 70 | // Step 1: Seed document with initial content | COMMENT |
| LOW | packages/app/src/server/agent-flow.test.ts | 84 | // Step 2: Agent writes another paragraph (simulates agent writing while doc is open) | COMMENT |
| LOW⚡ | packages/app/src/server/agent-flow.test.ts | 95 | // Step 3: Toggle to source — serialize Y.Doc → markdown | COMMENT |
| LOW⚡ | packages/app/src/server/agent-flow.test.ts | 104 | // Step 4: Simulate user editing in source mode — add a line | COMMENT |
| LOW⚡ | packages/app/src/server/agent-flow.test.ts | 107 | // Step 5: Toggle back to WYSIWYG — parse markdown → updateYFragment | COMMENT |
| LOW | packages/app/src/server/agent-flow.test.ts | 118 | // Step 6: Verify — serialize again to check all content survived | COMMENT |
| LOW⚡ | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 613 | // Step 1: type a name → block-nested banner appears. This is the | COMMENT |
| LOW⚡ | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 622 | // Step 2: install a MutationObserver on the banner's parent (subtree: | COMMENT |
| LOW⚡ | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 642 | // Step 3: type more characters. The probe re-runs against the new | COMMENT |
| LOW⚡ | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 649 | // Step 4: wait — event-driven — for the debounced re-probe to fire. | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 660 | // Step 5: wait for cascade to re-settle to block-nested (banner | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 708 | // Step 1: type a name → cascade settles to 'free' (initial nullable | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 719 | // Step 2: install a controllable deferred on findEnclosingGitRoot so | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 734 | // Step 3: edit the name — bumps deps → cascade useEffect re-runs → | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 756 | // Step 4: resolve the deferred → probe settles → cascade re-renders | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 808 | // Step 1: type a name → cascade probes → settles to confirm-git. | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 819 | // Step 2: capture the polling callback. The polling setInterval | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 831 | // Step 3: install a controllable deferred on findEnclosingGitRoot | COMMENT |
| LOW | …nts/CreateProjectDialog.cascade-staleness.dom.test.tsx | 843 | // Step 4: trigger a fresh probe via name edit → cascade-probe | COMMENT |
| LOW⚡ | packages/app/src/editor/provider-pool.test.ts | 3650 | // Step 1: open A, let its persistence write to IDB, close it. | COMMENT |
| LOW⚡ | packages/app/src/editor/provider-pool.test.ts | 3657 | // Step 2: rename A → B. The fix calls closeAndClearPersistence on | COMMENT |
| LOW⚡ | packages/app/src/editor/provider-pool.test.ts | 3666 | // Step 3: open B (the new location), let it persist, close it. | COMMENT |
| LOW⚡ | packages/app/src/editor/provider-pool.test.ts | 3673 | // Step 4: rename B → A (the move-back). This is the critical step: | COMMENT |
| LOW⚡ | packages/app/src/editor/provider-pool.test.ts | 3682 | // Step 5: open A again. With the IDB cleared in step 4, the new | COMMENT |
| LOW | packages/app/src/editor/extensions/mark-identity.ts | 112 | // Step 1: map previous ranges forward. | COMMENT |
| LOW | packages/app/src/editor/extensions/mark-identity.ts | 134 | // Step 2: walk new doc, match spans to mapped ranges. | COMMENT |
| LOW⚡ | …ver/src/server-observers-paired-write-baseline.test.ts | 56 | // Step 1: Agent paired-write via composeAndWriteRawBody. | COMMENT |
| 10 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 692 | 'lorem ipsum dolor sit amet '.repeat(2000), | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 692 | 'lorem ipsum dolor sit amet '.repeat(2000), | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 714 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 714 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 738 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 738 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 764 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 764 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 793 | selectionMarkdown: 'lorem ipsum dolor sit amet '.repeat(2000), | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 793 | selectionMarkdown: 'lorem ipsum dolor sit amet '.repeat(2000), | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 1319 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/handoff/prompt-composer.test.ts | 1319 | const hugeSelection = 'lorem ipsum dolor sit amet '.repeat(2000); | CODE |
| LOW | packages/core/src/logging/secret-scrub.test.ts | 49 | expect(scrubSecrets('/Users/Jane Doe/notes/plan.md')).not.toContain('Jane Doe'); | CODE |
| LOW | packages/core/src/logging/secret-scrub.test.ts | 51 | expect(scrubSecrets('/home/Jane Doe/notes')).not.toContain('Jane Doe'); | CODE |
| LOW | …ests/integration/conflict-aware-write-surfaces.test.ts | 883 | 'test@test.com', | CODE |
| LOW⚡ | …ages/app/tests/dom/input-rule-atom-ranges.dom.test.tsx | 152 | const lead = `${'lorem ipsum dolor sit amet '.repeat(2)}**see `; | CODE |
| LOW⚡ | …ages/app/tests/dom/input-rule-atom-ranges.dom.test.tsx | 152 | const lead = `${'lorem ipsum dolor sit amet '.repeat(2)}**see `; | CODE |
| LOW⚡ | …ages/app/tests/dom/input-rule-atom-ranges.dom.test.tsx | 158 | 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 | 158 | 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 | 164 | const leadEnd = 1 + 'lorem ipsum dolor sit amet '.repeat(2).length; | CODE |
| LOW⚡ | …ages/app/tests/dom/input-rule-atom-ranges.dom.test.tsx | 164 | const leadEnd = 1 + 'lorem ipsum dolor sit amet '.repeat(2).length; | CODE |
| LOW | packages/app/tests/perf/lib/bundle-check.test.ts | 39 | // Lorem ipsum repeated — compresses well, so gzipped is small. | COMMENT |
| LOW | …kages/app/tests/stress/bridge-convergence.fuzz.test.ts | 226 | const filler = 'lorem ipsum dolor sit amet '.repeat(25000); | CODE |
| LOW | …kages/app/tests/stress/bridge-convergence.fuzz.test.ts | 226 | const filler = 'lorem ipsum dolor sit amet '.repeat(25000); | CODE |
| LOW | …kages/app/tests/stress/command-palette-semantic.e2e.ts | 96 | 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 | 321 | expect(noteBox.getAttribute('placeholder')).toBe( | CODE |
| LOW | …ckages/app/src/components/ReportBugDialog.dom.test.tsx | 658 | expect(noteBox.getAttribute('placeholder')).toBe( | CODE |
| LOW | …ponents/settings/FrontmatterPluginSection.dom.test.tsx | 288 | expect(input?.getAttribute('placeholder')).toContain('guides/**/*'); | CODE |
| LOW | …ponents/settings/FrontmatterPluginSection.dom.test.tsx | 289 | expect(input?.getAttribute('placeholder')).toContain('pattern'); | CODE |
| LOW | …s/app/src/uninstall/uninstall-copy-parity.dom.test.tsx | 39 | const placeholder = el.getAttribute('placeholder'); | CODE |
| LOW | packages/app/src/editor/ComposerMentionInput.tsx | 292 | (extension) => extension.name === 'placeholder', | CODE |
| LOW | packages/app/src/editor/components/Mirror.tsx | 37 | function StatusFrame(props: { tone: 'placeholder' | 'error'; children: React.ReactNode }) { | CODE |
| LOW | packages/app/src/editor/components/Mirror.tsx | 63 | <StatusFrame tone="placeholder"> | CODE |
| LOW | packages/app/src/editor/components/Mirror.tsx | 76 | <StatusFrame tone="placeholder"> | CODE |
| LOW | …/src/editor/clipboard/clipboard-line-structure.test.ts | 588 | state: EditorState.create({ schema, doc: docFromMarkdown('placeholder') }), | CODE |
| LOW | …/src/editor/clipboard/clipboard-line-structure.test.ts | 685 | const probe = mountView(docFromMarkdown('placeholder')); | CODE |
| LOW | packages/server/src/checkpoint-chain.test.ts | 26 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW⚡ | …ver/src/server-observers-paired-write-baseline.test.ts | 64 | const fixturePayload = '## Section 1\n\nLorem ipsum dolor sit amet.\n\n'; | CODE |
| LOW⚡ | …ver/src/server-observers-paired-write-baseline.test.ts | 64 | const fixturePayload = '## Section 1\n\nLorem ipsum dolor sit amet.\n\n'; | CODE |
| LOW | packages/server/src/checkpoint-restore-floor.test.ts | 50 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/saved-themes-write.test.ts | 227 | writeFileSync(join(dir, 'terse.yml'), 'placeholder'); | CODE |
| LOW | packages/server/src/checkpoint-retention-tie.test.ts | 50 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/conflict-storage.test.ts | 393 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/qa-gc-budget-isolation.test.ts | 52 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/rename-log.test.ts | 543 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/rename-log.test.ts | 843 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/rename-log.test.ts | 1131 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/derive-timing-exhaustion.test.ts | 184 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/api-saved-themes.test.ts | 168 | writeFileSync(join(dir, 'conflict.yaml'), 'placeholder'); | CODE |
| LOW | packages/server/src/api-saved-themes.test.ts | 169 | writeFileSync(join(dir, 'conflict.yml'), 'placeholder'); | CODE |
| LOW | packages/server/src/git-worktree-status.test.ts | 152 | await pg.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/git-worktree-status.test.ts | 225 | await sg.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/git-worktree-status.test.ts | 261 | await pg.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/git-worktree-status.test.ts | 286 | await pg.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/shadow-repo.test.ts | 59 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/shadow-repo.test.ts | 83 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/shadow-repo.test.ts | 99 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/shadow-repo.test.ts | 116 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| LOW | packages/server/src/shadow-repo.test.ts | 142 | await git.raw('config', 'user.email', 'test@test.com'); | CODE |
| 60 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/app/tests/perf/scenarios/sweep-cache-regime.ts | 57 | * # Per-fixture run for fast iteration on harness changes: | COMMENT |
| MEDIUM | packages/app/tests/perf/lib/tempo-client.test.ts | 287 | // convert — verifying via substring keeps the test robust against | COMMENT |
| 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 | …kages/app/tests/stress/docs-open-scroll-restore.e2e.ts | 150 | // makes the assertion robust against PM scrollHeight drift across the | COMMENT |
| MEDIUM | …ages/app/tests/stress/outline-toolbar-occlusion.e2e.ts | 327 | // text is robust to that detail; there is exactly one such line in the doc. | COMMENT |
| MEDIUM | packages/app/tests/stress/list-keymap.e2e.ts | 123 | // robust to that mapping and clearer about intent. | COMMENT |
| MEDIUM | packages/app/scripts/measure-stress.sh | 47 | # A run that measured nothing appends nothing: harness crashed before its | COMMENT |
| MEDIUM | packages/app/scripts/measure-stress.sh | 190 | # anything else — not a measurement. Either the harness never reached | COMMENT |
| MEDIUM⚡ | packages/app/scripts/measure-fuzz.sh | 208 | # Optional appended field (newer harness): converged-late count — seeds that | COMMENT |
| MEDIUM⚡ | packages/app/scripts/measure-fuzz.sh | 210 | # passes by the harness; recorded here as a perf signal. | COMMENT |
| MEDIUM⚡ | packages/app/scripts/measure-fuzz.sh | 218 | # Optional appended field (newer harness): per-failing-seed oracle class — | COMMENT |
| MEDIUM⚡ | packages/app/scripts/measure-fuzz.sh | 219 | # `failClasses=[<seed>:<class>,...]` where class is one of the harness's | COMMENT |
| MEDIUM⚡ | packages/app/scripts/measure-fuzz.sh | 223 | # oracle without a manual seed replay. Empty (or absent, on an older harness) | COMMENT |
| MEDIUM | packages/app/scripts/measure-fuzz.sh | 235 | # anything else — not a measurement: no RESULT line (the harness | COMMENT |
| MEDIUM | packages/app/scripts/measure-fuzz.sh | 243 | # robust against future field reorderings (within reason — extending the | COMMENT |
| MEDIUM | packages/app/src/components/OutlinePanel.tsx | 147 | // the guard keeps this robust under future layout changes. | COMMENT |
| MEDIUM | packages/app/src/components/RowDisclosure.tsx | 49 | // Absolutely placed on the row's first line, so the description below | COMMENT |
| MEDIUM | packages/app/src/components/skill-actions.tsx | 302 | // the source's scope; `useOpenSkill` is the robust open (a fresh project skill | COMMENT |
| MEDIUM | packages/app/src/presence/use-presence.test.ts | 228 | // states. Treat falsy values uniformly so the predicate is robust. | COMMENT |
| MEDIUM | packages/app/src/editor/TiptapEditor.tsx | 1668 | // Using index (not slug) keeps this robust to duplicate heading texts without | COMMENT |
| MEDIUM | …kages/app/src/editor/slash-command/component-items.tsx | 536 | // the one just inserted. This is robust whether the cursor lands before | COMMENT |
| MEDIUM | …/src/editor/clipboard/clipboard-line-structure.test.ts | 156 | // Destination-robust oracle: model default HTML whitespace folding | COMMENT |
| MEDIUM | …kages/app/src/editor/clipboard/opendepth-guard.test.ts | 415 | // that the html serializer is robust when handed a raw ancestor chain, and | COMMENT |
| MEDIUM | packages/desktop/electron-builder.yml | 128 | # harness-config write routes through its toml_edit addon. Like | COMMENT |
| MEDIUM | packages/desktop/tests/main/url-scheme-handler.test.ts | 2419 | // both so the receiver path stays robust across Electron versions and | COMMENT |
| MEDIUM | packages/server/src/config-file-watcher.ts | 67 | // is the robust pattern: chokidar's directory watch sees `add`, | COMMENT |
| MEDIUM | packages/server/src/apply-managed-rename.ts | 205 | // touch JSX attribute values, but ordering keeps the contract robust | COMMENT |
| MEDIUM | packages/server/src/content-filter.test.ts | 772 | // The `.ok` case is nuanced: `<folder>/.ok` and `<folder>/.ok/templates` | COMMENT |
| MEDIUM | packages/server/src/server-factory.test.ts | 2011 | // named marker is robust against future additions of other extensions | COMMENT |
| MEDIUM | …/server/src/mcp/tools/output-schema-strictness.test.ts | 178 | // field to reject. The probe below is robust to this case because it | COMMENT |
| MEDIUM | packages/cli/src/commands/mcp-chain-validation.test.ts | 124 | '# command -v npx suppressed by test harness\n', | CODE |
| MEDIUM | .github/workflows/desktop-release.yml | 745 | # reasoning as the smoke harness below. This is not a rare path: | COMMENT |
| MEDIUM | .github/workflows/desktop-release.yml | 783 | # lands will not contain the smoke harness. Blocking a release because | COMMENT |
| MEDIUM | .github/workflows/desktop-release.yml | 808 | # The harness is CI tooling, not release content, so take it from the | COMMENT |
| MEDIUM | .github/workflows/desktop-release.yml | 818 | # the harness still releases ungated rather than being newly gated by | COMMENT |
| MEDIUM | .github/workflows/desktop-release.yml | 1970 | # A skipped gate (ref predates the harness) is not a blocked release, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/desktop/scripts/smoke-terminal-package-cdp.py | 118 | let ptyId = null; | CODE |
| HIGH | packages/desktop/scripts/smoke-terminal-package-cdp.py | 127 | if (ptyId !== null) await bridge.terminal.kill(ptyId).catch(() => {{}}); | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 147 | if (markerReachedOutput) void finish(null); | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 154 | if (ptyId === null) {{ | CODE |
| HIGH⚡ | packages/desktop/scripts/smoke-terminal-package-cdp.py | 155 | pendingData.push(message); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …tests/integration/removal-phantom-resurrection.test.ts | 81 | const ext = server.instance.hocuspocus.configuration.extensions.find( | CODE |
| CRITICAL | packages/app/src/editor/extensions/JsxComponentView.tsx | 600 | const fallbackNode = node.type.schema.nodes.rawMdxFallback.create( | CODE |
| CRITICAL | packages/desktop/tests/integration/auto-updater.test.ts | 4557 | rig.logger.warn.mock.calls.some((c) => c[0] === 'staged-update cache reclaim failed'), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/app/tests/stress/tabs-component-strip.e2e.ts | 48 | ### Create a new project | COMMENT |
| MEDIUM | packages/desktop/src/main/path-install.test.ts | 572 | '# This file contains fish universal variable definitions.\n', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/desktop/scripts/smoke-terminal-package-cdp.py | 92 | except Exception as error: | CODE |
| LOW | packages/desktop/scripts/smoke-terminal-package-cdp.py | 96 | except Exception as error: # The app may still be creating its first page. | CODE |
| LOW | packages/desktop/scripts/smoke-terminal-package-cdp.py | 195 | except Exception as error: | STRING |
| MEDIUM | packages/desktop/scripts/smoke-terminal-package-cdp.py | 192 | def main() -> int: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/app/scripts/perf-prod.sh | 10 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/desktop/scripts/smoke-terminal-package-cdp.py | 70 | CODE |