AI Slop Code Risk Monitor

emdash-cms/emdash

SlopCodeMonitor badge for emdash-cms/emdash Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

EmDash is a full-stack TypeScript CMS based on Astro; the spiritual successor to WordPress

2.4 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for emdash-cms/emdash, a TypeScript project with 14,074 GitHub stars. SynthScan examined 1,293,013 lines of code across 4436 source files, recording 2016 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 2.4 (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.

2.4
Adjusted Signal
2.4
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
14.1K
Stars
TypeScript
Language
1.3M
Lines of Code
4.4K
Files
2.0K
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

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.

Cognitive Ownership Risk 5.5/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 1337 finding(s).

Hallucinated Dependency & Supply Chain Risk 1.0/100 · LOW

Are imports declared and package/API names verified? 233 finding(s).

Agent Over-Engineering Ratio 8.9/100 · LOW

Are wrappers, guards, and repeated structures necessary? 1510 finding(s).

PR Review Velocity Impact 10.9/100 · LOW

Which changes need focused human review? 2016 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 3HIGH 0MEDIUM 474LOW 1539

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 2016 distinct pattern matches across 10 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.

Decorative Section Separators446 hits · 1341 pts
SeverityFileLineSnippetContext
MEDIUMinfra/perf-monitor/worker-configuration.d.ts10185// ── Error types ──────────────────────────────────────────────────────────────COMMENT
MEDIUMinfra/perf-monitor/worker-configuration.d.ts10206// ── Binding ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMinfra/discord-bot/src/index.ts41// ─── Discord Interaction Handler ─────────────────────────────────COMMENT
MEDIUMinfra/discord-bot/src/index.ts153// ─── GitHub OAuth Callback ───────────────────────────────────────COMMENT
MEDIUMinfra/discord-bot/src/index.ts235// ─── GitHub Webhook Handler ──────────────────────────────────────COMMENT
MEDIUMinfra/discord-bot/src/index.ts345// ─── Message Templates ───────────────────────────────────────────COMMENT
MEDIUMinfra/discord-bot/src/index.ts379// ─── Helpers ─────────────────────────────────────────────────────COMMENT
MEDIUMinfra/flue-review/worker-configuration.d.ts10587// ── Error types ──────────────────────────────────────────────────────────────COMMENT
MEDIUMinfra/flue-review/worker-configuration.d.ts10608// ── Binding ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/playground/src/templates.ts9// ── Sample data generators ───────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/playground/src/Playground.tsx10// ── Types ────────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/playground/src/Playground.tsx31// ── Hash sharing ─────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/playground/src/Playground.tsx55// ── Drag handle ──────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/playground/src/Playground.tsx75// ── Component ────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/tests/form-conditions.test.tsx8// ── Mocks ────────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/tests/form-conditions.test.tsx198// ── Helpers ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/tests/form-conditions.test.tsx208// ── Tests ────────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/tests/renderer.test.tsx8// ── Mocks ────────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/tests/renderer.test.tsx295// ── Helpers ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/tests/renderer.test.tsx311// ── Tests ────────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/tests/validation.test.ts20 // ── Valid blocks ─────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/tests/validation.test.ts260 // ── Invalid blocks ───────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/tests/validation.test.ts822 // ── Edge cases ───────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/src/types.ts1// ── Composition Objects ──────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/src/types.ts11// ── Elements ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/src/types.ts194// ── Form Fields (elements + optional condition) ──────────────────────────────COMMENT
MEDIUMpackages/blocks/src/types.ts215// ── Block Sub-types ──────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/src/types.ts273// ── Blocks ───────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/src/types.ts415// ── Interactions ─────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/src/types.ts520// ── Response ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/src/builders.ts46// ── Block Builders ───────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/src/builders.ts175// ── Element Builders ─────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/src/builders.ts532// ── Exports ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/blocks/src/blocks/chart.tsx27// ── Security: HTML-escape untrusted strings before they reach ECharts ────────COMMENT
MEDIUMpackages/blocks/src/blocks/chart.tsx46// ── Security: Sanitize custom ECharts options ────────────────────────────────COMMENT
MEDIUMpackages/atproto-test-utils/tests/round-trip.test.ts421// ── helpers ────────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/atproto-test-utils/src/mock-pds.ts124 // ─── handlers ────────────────────────────────────────────────────────────COMMENT
MEDIUMpackages/atproto-test-utils/src/mock-pds.ts277// ─── helpers ─────────────────────────────────────────────────────────────────COMMENT
MEDIUM…es/core/tests/unit/plugins/adapt-sandbox-entry.test.ts648 // ── Deprecation alias layer ────────────────────────────────COMMENT
MEDIUM…ges/core/tests/unit/plugins/marketplace-client.test.ts26// ── Helpers ───────────���────────────────────────────────────────────COMMENT
MEDIUMpackages/core/tests/unit/plugins/define-plugin.test.ts329 // ── Deprecation alias layer ────────────────────────────────COMMENT
MEDIUM…es/core/tests/unit/api/registry-artifact-proxy.test.ts178 // ── auth ───────────────────────────────────────────────────────────COMMENT
MEDIUM…es/core/tests/unit/api/registry-artifact-proxy.test.ts190 // ── param validation ───────────────────────────────────────────────COMMENT
MEDIUM…es/core/tests/unit/api/registry-artifact-proxy.test.ts269 // ── config ─────────────────────────────────────────────────────────COMMENT
MEDIUM…es/core/tests/unit/api/registry-artifact-proxy.test.ts282 // ── resolution → declared source is proxied ────────────────────────COMMENT
MEDIUM…es/core/tests/unit/api/registry-artifact-proxy.test.ts476 // ── 404s ───────────────────────────────────────────────────────────COMMENT
MEDIUM…es/core/tests/unit/api/registry-artifact-proxy.test.ts538 // ── content-type allowlist ─────────────────────────────────────────COMMENT
MEDIUM…es/core/tests/unit/api/registry-artifact-proxy.test.ts585 // ── SSRF on the RESOLVED url ────────────────────────────────────────COMMENT
MEDIUM…es/core/tests/unit/api/registry-artifact-proxy.test.ts637 // ── upstream + size ─────────────────────────────────────────────────COMMENT
MEDIUM…kages/core/tests/unit/api/marketplace-handlers.test.ts47// ── Mock factories ────────────────────────────────────────────────COMMENT
MEDIUM…kages/core/tests/unit/api/marketplace-handlers.test.ts348 // ── Install ────────────────────────────────────────────────────COMMENT
MEDIUM…kages/core/tests/unit/api/marketplace-handlers.test.ts640 // ── Update ─────────────────────────────────────────────────────COMMENT
MEDIUM…kages/core/tests/unit/api/marketplace-handlers.test.ts1227 // ── Uninstall ──────────────────────────────────────────────────COMMENT
MEDIUM…kages/core/tests/unit/api/marketplace-handlers.test.ts1387 // ── Update check ───────────────────────────────────────────────COMMENT
MEDIUM…kages/core/tests/unit/api/marketplace-handlers.test.ts1469 // ── Search proxy ───────────────────────────────────────────────COMMENT
MEDIUM…kages/core/tests/unit/api/marketplace-handlers.test.ts1489 // ── GetPlugin proxy ────────────────────────────────────────────COMMENT
MEDIUMpackages/core/tests/unit/api/backup-handlers.test.ts30// ── Storage fake ────────────────────────────────────────────────COMMENT
MEDIUMpackages/core/tests/unit/api/backup-handlers.test.ts92// ── Tests ───────────────────────────────────────────────────────COMMENT
MEDIUMpackages/core/tests/unit/api/registry-handlers.test.ts38// ── Mock storage ─────────────────────────────────────────────────COMMENT
MEDIUMpackages/core/tests/unit/api/registry-handlers.test.ts93// ── Suite ────────────────────────────────────────────────────────COMMENT
386 more matches not shown…
Hyper-Verbose Identifiers1064 hits · 1081 pts
SeverityFileLineSnippetContext
LOWinfra/discord-bot/src/contributor-invitation.ts54function contributorInvitationComment(discordInviteUrl: string): string {CODE
LOWinfra/discord-bot/src/discord.ts239export function interactionResponseWithButton(CODE
LOWinfra/discord-bot/src/index.ts338export function shouldAnnounceUnlinkedMerge(inviteResult: InviteResult, prNumber: number): boolean {CODE
LOWinfra/flue-review/.flue/sandboxes/cloudflare-shell.ts77function createWorkspaceSessionEnv(CODE
LOWinfra/flue-review/.flue/lib/diff-budget.ts70function isCompiledReleaseActionSection(section: Section): boolean {CODE
LOWinfra/flue-review/.flue/lib/diff-budget.ts76function isGeneratedWorkerTypesSection(section: Section): boolean {CODE
LOWinfra/flue-review/.flue/lib/github.ts794export async function classifyPullRequestHeadMove(CODE
LOWinfra/flue-review/.flue/lib/github.ts1024async function fetchNewestReviewComments(CODE
LOWinfra/flue-review/.flue/lib/code-tool-output-budget.ts5export function assertCodeToolOutputWithinBudget(CODE
LOWinfra/flue-review/.flue/lib/review-failure.ts20export function formatReviewFailureSummary(stage: ReviewStage, error: unknown): string {CODE
LOWinfra/flue-review/.flue/lib/ai-payload-budget.ts74function compactionRequiredResponse(modelId: string): Response {CODE
LOWinfra/flue-review/eval/run.ts217function assertNoGitHubCredentials(): void {CODE
LOWpackages/blocks/src/validation.ts106function validateInitialValueInOptions(CODE
LOWpackages/blocks/src/validation.ts1765export function validateContentEditorActionResponse(CODE
LOWpackages/blocks/src/validation.ts1793export function validateEditorDraftPatchEffect(effect: unknown): {CODE
LOWpackages/blocks/src/validation.ts1861function validateEditorTerminalEffects(CODE
LOWpackages/blocks/src/validation.ts1888export function validateContentEditorPanelInteraction(interaction: unknown): {CODE
LOWpackages/blocks/src/elements/number-input.tsx7export function NumberInputElementComponent({CODE
LOWpackages/blocks/src/elements/text-input.tsx7export function TextInputElementComponent({CODE
LOWpackages/blocks/src/elements/secret-input.tsx7export function SecretInputElementComponent({CODE
LOWpackages/blocks/src/elements/date-input.tsx6export function DateInputElementComponent({CODE
LOWpackages/atproto-test-utils/src/fake-publisher.ts148export function createFakePublisherFixture(CODE
LOW…ges/registry-verification/tests/provenance-contract.ts575function reusableCertificateIdentity(overrides: Record<number, string> = {}) {CODE
LOWpackages/registry-verification/src/repository.ts4export function canonicalizeRepositoryUrl(value: string): string | null {CODE
LOWpackages/registry-verification/src/records-entry.ts20export function verifyPackageReleaseRecords(CODE
LOWpackages/registry-verification/src/records-default.ts9export function verifyPackageReleaseRecords(CODE
LOWpackages/registry-verification/src/records.ts122export async function inspectPackageReleaseRecords(CODE
LOWpackages/registry-verification/src/records.ts241async function verifyPackageReleaseRecordsInternal(CODE
LOWpackages/registry-verification/src/records.ts339export function verifyPackageReleaseRecordsWithVerifier(CODE
LOWpackages/registry-verification/src/records.ts345export function verifyPackageReleaseRecordsWithDefaultVerifier(CODE
LOWpackages/registry-verification/src/records.ts371function isComparablePluginVersion(value: string): boolean {CODE
LOWpackages/registry-verification/src/artifact.ts182export function recordScopedImageCacheUrl(CODE
LOWpackages/registry-verification/src/artifact.ts195export async function resolvePublisherPdsEndpoint(CODE
LOWpackages/registry-verification/src/artifact.ts361function recordScopedCacheEndpoint(value: unknown): string | null {CODE
LOWpackages/registry-verification/src/checksum.ts92export async function computeArtifactDigestCandidates(CODE
LOWpackages/core/tests/unit/object-cache-content.test.ts56function backendWithOldContentValue(value: unknown): ObjectCacheBackend {CODE
LOWpackages/core/tests/unit/comments/turnstile.test.ts9async function bundledGetTurnstileSecretKey(): Promise<() => string> {CODE
LOWpackages/core/tests/unit/auth/oauth-start-route.test.ts17function makeThrowingRuntimeLocals() {CODE
LOW…ages/core/tests/unit/auth/oauth-callback-route.test.ts15function makeThrowingRuntimeLocals() {CODE
LOW…nit/plugins/publication-policy-effective-draft.test.ts103 async function publishedWithPendingDraft() {CODE
LOW…ckages/core/tests/unit/plugins/exclusive-hooks.test.ts974function createSelectCountingPlugin(): { plugin: KyselyPlugin; counter: { count: number } } {CODE
LOWpackages/core/tests/unit/plugins/redirect-types.test.ts5async function updateRedirectFromDocumentedContext(CODE
LOW…/tests/unit/converters/custom-block-round-trip.test.ts13function portableTextToIdentityDocument(blocks: PortableTextBlock[]) {CODE
LOW…t/components/inline-portable-text-media-picker.test.ts307 function makeToolbarControlsVisible(toolbar: HTMLElement) {CODE
LOW…sts/unit/components/inline-portable-text-menus.test.ts149 function makeToolbarControlsVisible(toolbar: HTMLElement) {CODE
LOWpackages/core/tests/unit/menus/menus.test.ts420 async function insertMenuWithCollectionItem(item: {CODE
LOWpackages/core/tests/unit/astro/routes.test.ts76 function collectRoutePatternsWithEntrypoints(srcDir?: URL): Array<{CODE
LOW…e/tests/unit/astro/middleware-security-headers.test.ts137function anonymousPublicPageContext() {CODE
LOW…ests/unit/astro/middleware-redirect-wait-until.test.ts76 async function requestAndExpectInvocationHeldOpen(pathname: string, write: { open: () => void }) {CODE
LOW…re/tests/unit/astro/middleware-cache-validator.test.ts116function anonymousPublicPageContext(cache: TestCache) {CODE
LOW…ges/core/tests/unit/astro/middleware-prerender.test.ts272function createAnonymousPublicPageContext(locals: Record<string, unknown> = {}) {CODE
LOW…ges/core/tests/unit/astro/middleware-prerender.test.ts971 function anonymousCategoryPageContext() {CODE
LOWpackages/core/tests/unit/import/wxr-taxonomies.test.ts41function createAssignmentReadCountingPlugin(): {CODE
LOWpackages/core/tests/unit/import/wxr-taxonomies.test.ts69async function createPostsCollectionWithEntry(CODE
LOW…core/tests/unit/import/wordpress-plugin-source.test.ts58function expectUserAgentOnAllCalls() {CODE
LOWpackages/core/tests/unit/client/client.test.ts70function mediaUsageRepairCollection(CODE
LOWpackages/core/tests/workerd/migrations-d1.test.ts396 async function seedCollectionAfterRegistry(): Promise<string[]> {CODE
LOWpackages/core/tests/workerd/revision-restore-d1.test.ts240function withCumulativeBatchChanges(database: D1Database): D1Database {CODE
LOW…/core/tests/workerd/webhook-notifier-plugin-d1.test.ts32function loadWebhookNotifierPlugin(): ResolvedPlugin {CODE
LOW…/core/tests/integration/smoke/isolated-install.test.ts91function discoverWorkspacePackages(): Map<string, WorkspacePackage> {CODE
1004 more matches not shown…
Fake / Example Data230 hits · 231 pts
SeverityFileLineSnippetContext
LOWpackages/blocks/src/validation.ts602 message: "Field 'placeholder' must be a string",CODE
LOWpackages/blocks/src/validation.ts707 message: "Field 'placeholder' must be a string",CODE
LOWpackages/blocks/src/validation.ts828 message: "Field 'placeholder' must be a string",CODE
LOWpackages/blocks/src/validation.ts876 message: "Field 'placeholder' must be a string",CODE
LOWpackages/blocks/src/validation.ts995 message: "Field 'placeholder' must be a string",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts36 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts41 expect(created.displayName).toBe("Jane Doe");CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts437 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts447 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts476 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts493 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts507 expect(enHit?.displayName).toBe("Jane Doe");CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts545 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts573 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts604 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts629 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts650 expect(enCredits[0]?.byline.displayName).toBe("Jane Doe");CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts658 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts688 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts714 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts741 expect(enResult.get(enPost.id)?.[0]?.byline.displayName).toBe("Jane Doe");CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts742 expect(enResult.get(frPost.id)?.[0]?.byline.displayName).toBe("Jane Doe");CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts754 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts817 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts884 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts915 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts947 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts978 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts1025 displayName: "Jane Doe",CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts2110 await bylineRepo.update(byline.id, { displayName: "Jane Doe" });CODE
LOW…s/core/tests/unit/database/repositories/byline.test.ts2113 expect(reloaded?.displayName).toBe("Jane Doe");CODE
LOW…/tests/unit/auth/invite-register-options-route.test.ts41 email: "admin@example.com",CODE
LOWpackages/core/tests/unit/auth/oauth-invite.test.ts32 email: "admin@example.com",CODE
LOW…es/core/tests/unit/auth/sign-in-handover-route.test.ts20 email: "admin@example.com",CODE
LOWpackages/core/tests/unit/auth/invite.test.ts35 email: "admin@example.com",CODE
LOW…core/tests/unit/auth/invite-route-localization.test.ts29 email: "admin@example.com",CODE
LOWpackages/core/tests/unit/plugins/email-pipeline.test.ts82 to: "user@example.com",CODE
LOWpackages/core/tests/unit/plugins/email-pipeline.test.ts555 emailPipeline.send(createTestMessage({ to: "admin@example.com" }), "system"),CODE
LOWpackages/core/tests/unit/plugins/email-pipeline.test.ts563 expect.stringContaining("admin@example.com"),CODE
LOWpackages/core/tests/unit/plugins/email-pipeline.test.ts1227 to: "admin@example.com",CODE
LOWpackages/core/tests/unit/plugins/email-pipeline.test.ts1240 to: "admin@example.com",CODE
LOWpackages/core/tests/unit/plugins/email-pipeline.test.ts1272 await emailPipeline.send(createTestMessage({ to: "admin@example.com" }), "system");CODE
LOWpackages/core/tests/unit/plugins/email-pipeline.test.ts1378 await emailPipeline.send(createTestMessage({ to: "user@example.com" }), "some-plugin");CODE
LOWpackages/core/tests/unit/plugins/email-pipeline.test.ts1381 expect(infoSpy).toHaveBeenCalledWith(expect.stringContaining("user@example.com"));CODE
LOWpackages/core/tests/unit/cli/wxr-parser.test.ts211 expect(result.authors[0]?.email).toBe("admin@example.com");CODE
LOW…ckages/core/tests/unit/api/domain-notify-route.test.ts21 email: "admin@example.com",CODE
LOWpackages/core/tests/unit/api/content-handlers.test.ts76 data: { name: "John Doe", title: "Trustee" },CODE
LOWpackages/core/tests/unit/api/content-handlers.test.ts563 displayName: "Jane Doe",CODE
LOWpackages/core/tests/unit/api/content-handlers.test.ts596 displayName: "Jane Doe",CODE
LOWpackages/core/tests/unit/api/content-handlers.test.ts664 displayName: "Jane Doe",CODE
LOWpackages/core/tests/unit/api/content-handlers.test.ts813 displayName: "Jane Doe",CODE
LOW…unit/api/media-usage-collection-deletion-route.test.ts44 user: { id: "user-1", email: "admin@example.com", name: "Admin", role },CODE
LOWpackages/core/tests/unit/api/handlers/bylines.test.ts31 displayName: "Jane Doe",CODE
LOWpackages/core/tests/unit/api/handlers/bylines.test.ts72 displayName: "Jane Doe",CODE
LOWpackages/core/tests/unit/api/handlers/bylines.test.ts100 displayName: "Jane Doe",CODE
LOWpackages/core/tests/unit/api/handlers/bylines.test.ts165 displayName: "Jane Doe",CODE
LOWpackages/core/tests/unit/api/handlers/bylines.test.ts195 displayName: "Jane Doe",CODE
LOWpackages/core/tests/unit/api/handlers/bylines.test.ts224 displayName: "Jane Doe",CODE
LOWpackages/core/tests/unit/bylines/bylines-query.test.ts46 displayName: "Jane Doe",CODE
LOWpackages/core/tests/unit/bylines/bylines-query.test.ts53 expect(result?.displayName).toBe("Jane Doe");CODE
170 more matches not shown…
Over-Commented Block162 hits · 160 pts
SeverityFileLineSnippetContext
LOWinfra/perf-monitor/worker-configuration.d.ts11961// PubSubMessage represents an incoming PubSub message.COMMENT
LOWinfra/perf-monitor/worker-configuration.d.ts12081 // Note `unknown & T` is equivalent to `T`.COMMENT
LOWinfra/perf-monitor/worker-configuration.d.ts12101 type MaybeCallableProvider<T> = T extends (...args: any[]) => any ? MethodOrProperty<T> : unknown;COMMENT
LOWinfra/perf-monitor/worker-configuration.d.ts12121 // declaration will be merged with this one.COMMENT
LOWinfra/perf-monitor/worker-configuration.d.ts13201 }COMMENT
LOWinfra/discord-bot/worker-configuration.d.ts13041 readonly mid: number;COMMENT
LOWinfra/discord-bot/worker-configuration.d.ts13181 // Utility type for adding `Provider`/`Disposable`s to `object` types only.COMMENT
LOWinfra/discord-bot/worker-configuration.d.ts13221 //COMMENT
LOWinfra/discord-bot/worker-configuration.d.ts13241 // durableNamespaces: "MyDurableObject" | "AnotherDurableObject";COMMENT
LOWinfra/discord-bot/worker-configuration.d.ts14401 | Attributes;COMMENT
LOWinfra/flue-review/worker-configuration.d.ts10341 // WebSocketCOMMENT
LOWinfra/flue-review/worker-configuration.d.ts13201 // auth was used.COMMENT
LOWinfra/flue-review/worker-configuration.d.ts13261 // Types that can be used through `Stub`sCOMMENT
LOWinfra/flue-review/worker-configuration.d.ts13301 [K in keyof T]: Unstubify<T[K]>;COMMENT
LOWinfra/flue-review/worker-configuration.d.ts13321 // Unwrapping `Stub`s allows calling with `Stubable` arguments.COMMENT
LOWinfra/flue-review/worker-configuration.d.ts13341 // You can use `wrangler types` to generate the `Env` type automatically.COMMENT
LOWinfra/flue-review/.flue/workflows/review.ts1// Review workflow (Cloudflare target) -- cf-shell (Cloudflare Shell) variant.COMMENT
LOWinfra/flue-review/.flue/lib/capacity.ts1// Graceful handling for model capacity errors (Workers AI capacity, providerCOMMENT
LOWdocs/worker-configuration.d.ts12261 // Message IDCOMMENT
LOWdocs/worker-configuration.d.ts12401 };COMMENT
LOWdocs/worker-configuration.d.ts12441 // Type of `env`.COMMENT
LOWdocs/worker-configuration.d.ts12461 // // thus should behave as Durable Object namsepace bindings.COMMENT
LOWscripts/sync-blog-demos.sh1#!/bin/bashCOMMENT
LOWpackages/core/vitest.config.ts1import { defineConfig } from "vitest/config";COMMENT
LOWpackages/core/tests/unit/settings/settings.test.ts801// Cross-mutation cache invalidationCOMMENT
LOW…s/core/tests/unit/database/repositories/byline.test.ts1321 expect(post2Credits[0]?.byline.customFields?.job_title).toBe("Editor");COMMENT
LOWpackages/core/tests/unit/config/secrets.test.ts121 // 32-byte keys encode to 43 base64url chars. The 43rd char encodesCOMMENT
LOWpackages/core/tests/unit/redirects/loops.test.ts161COMMENT
LOWpackages/core/tests/unit/bylines/bylines-query.test.ts361 // the per-bucket findByUserIds calls each fired their ownCOMMENT
LOWpackages/core/tests/unit/import/ssrf.test.ts261 // The URL parser normalizes this to hex, so this exercises the same pathCOMMENT
LOWpackages/core/tests/unit/import/ssrf.test.ts601 it("allows look-alike domains that are not on the blocklist", () => {COMMENT
LOW…sts/integration/api/bylines-customfields-write.test.ts101 beforeEach(async () => {COMMENT
LOW…tegration/wordpress-import/wxr-i18n-taxonomies.test.ts861 });COMMENT
LOW…tegration/wordpress-import/wxr-i18n-taxonomies.test.ts961 // row gets one -- expected.COMMENT
LOWpackages/core/tests/utils/mcp-runtime.ts81 (serverTransport as unknown as Record<string, unknown>)._otherTransport = clientTransport;COMMENT
LOWpackages/core/tests/utils/test-db.ts241// ---------------------------------------------------------------------------COMMENT
LOWpackages/core/src/loader.ts1441 AND cb.byline_id IN (${sql.join(bylineGroups.map((g) => sql`${g}`))})COMMENT
LOWpackages/core/src/loader.ts1781 : undefined;COMMENT
LOWpackages/core/src/loader.ts1861 (bylineFilter && bylineFilter.groups.length === 0) ||COMMENT
LOWpackages/core/src/loader.ts2101 // Query the per-collection tableCOMMENT
LOWpackages/core/src/emdash-runtime.ts2401 } catch (error) {COMMENT
LOWpackages/core/src/emdash-runtime.ts2661 // proactively delete it: the row is a few hundred bytes of deadCOMMENT
LOWpackages/core/src/emdash-runtime.ts2721 const dataUrl = `data:text/javascript;base64,${Buffer.from(entry.code).toString("base64")}`;COMMENT
LOWpackages/core/src/query.ts561 * ```COMMENT
LOWpackages/core/src/query.ts801 ordered[k] = stableOrder(v);COMMENT
LOWpackages/core/src/database/repositories/content.ts2001 // Deliberately not locale-scoped: the author fallback is suppressed byCOMMENT
LOWpackages/core/src/seed/apply.ts361 // 4. Taxonomy definitions + TermsCOMMENT
LOWpackages/core/src/plugins/marketplace.ts401// of the authoring CLI; the two values must stay in sync.COMMENT
LOWpackages/core/src/plugins/types.ts2281// the shared wire shape (`@emdash-cms/plugin-types` `PluginManifest`). TheCOMMENT
LOWpackages/core/src/plugins/adapt-sandbox-entry.ts201 }COMMENT
LOWpackages/core/src/mcp/server.ts881 const server = new McpServer(COMMENT
LOWpackages/core/src/search/fts-manager.ts261 WHEN NEW.deleted_at IS NULLCOMMENT
LOWpackages/core/src/api/handlers/registry.ts621 slug,COMMENT
LOWpackages/core/src/api/handlers/registry.ts901 // Rewrite the manifest's id to the derived opaque pluginId beforeCOMMENT
LOWpackages/core/src/api/handlers/registry.ts921 success: false,COMMENT
LOWpackages/core/src/api/handlers/registry.ts1041 // the profile carries the marketing copy.COMMENT
LOWpackages/core/src/astro/middleware.ts781 const hasPreviewToken = url.searchParams.has("_preview");COMMENT
LOWpackages/core/src/astro/middleware.ts841 // On a fresh deployment the database may be completely empty.COMMENT
LOWpackages/core/src/astro/middleware.ts981 // - request-scoped (remote) backend only -- this branch implies it;COMMENT
LOWpackages/core/src/astro/middleware.ts1121COMMENT
102 more matches not shown…
Verbosity Indicators41 hits · 77 pts
SeverityFileLineSnippetContext
LOW…ckages/core/tests/integration/auth/device-flow.test.ts123 // Step 1: Request device codeCOMMENT
LOW⚡…ckages/core/tests/integration/auth/device-flow.test.ts134 // Step 2: Poll before authorization → pendingCOMMENT
LOW⚡…ckages/core/tests/integration/auth/device-flow.test.ts142 // Step 3: User authorizes (admin role = 50)COMMENT
LOW⚡…ckages/core/tests/integration/auth/device-flow.test.ts150 // Step 4: Exchange for tokensCOMMENT
LOW⚡…ckages/core/tests/integration/auth/device-flow.test.ts164 // Step 5: Device code should be consumedCOMMENT
LOW⚡…ckages/core/tests/integration/auth/device-flow.test.ts172 // Step 6: Tokens should be storedCOMMENT
LOW⚡…core/tests/integration/auth/authorization-code.test.ts166 // Step 1: Generate PKCE pairCOMMENT
LOW⚡…core/tests/integration/auth/authorization-code.test.ts170 // Step 2: Get authorization codeCOMMENT
LOW…core/tests/integration/auth/authorization-code.test.ts186 // Step 3: Exchange code for tokensCOMMENT
LOW…core/tests/integration/auth/authorization-code.test.ts203 // Step 4: Verify tokens are storedCOMMENT
LOW…core/tests/integration/auth/authorization-code.test.ts215 // Step 5: Authorization code is consumed (single-use)COMMENT
LOW⚡…/core/tests/integration/client/oauth-discovery.test.ts43 // Step 1: get the authorization server URL from protected resource metadataCOMMENT
LOW⚡…/core/tests/integration/client/oauth-discovery.test.ts49 // Step 2: the SDK constructs /.well-known/oauth-authorization-server/_emdashCOMMENT
LOWpackages/core/src/cli/commands/login.ts208 // Step 1: Fetch auth discovery.COMMENT
LOWpackages/core/src/cli/commands/login.ts263 // Step 2: Request device codeCOMMENT
LOWpackages/core/src/cli/commands/login.ts285 // Step 3: Display instructionsCOMMENT
LOWpackages/core/src/cli/commands/login.ts307 // Step 4: Poll for tokenCOMMENT
LOWpackages/core/src/cli/commands/login.ts319 // Step 5: Fetch user infoCOMMENT
LOWpackages/core/src/cli/commands/login.ts346 // Step 6: Save credentials (persist custom headers so subsequent commands inherit them)COMMENT
LOW⚡packages/core/src/api/handlers/registry.ts614 // Step 1: look up the package by DID + slug. The browser alreadyCOMMENT
LOW⚡packages/core/src/api/handlers/registry.ts624 // Step 2: select the target release.COMMENT
LOW⚡packages/core/src/api/handlers/registry.ts1034 // Step 7: store in R2 under the registry prefix.COMMENT
LOW⚡packages/core/src/api/handlers/registry.ts1037 // Step 8: write plugin state.COMMENT
LOWpackages/core/src/api/handlers/registry.ts837 // Step 6: fetch bytes through an aggregator cache, the publisher PDS,COMMENT
LOW⚡packages/marketplace/src/workflows/audit.ts75 // Step 1: Run code auditCOMMENT
LOWpackages/marketplace/src/workflows/audit.ts96 // Step 2: Run image audit (skip if no images)COMMENT
LOWpackages/marketplace/src/workflows/audit.ts112 // Step 3: Store results in D1 and link to versionCOMMENT
LOWpackages/marketplace/src/workflows/audit.ts146 // Step 4: Resolve version status and update D1COMMENT
LOWpackages/admin/src/components/auth/PasskeyLogin.tsx162 // Step 1: Get authentication options from serverCOMMENT
LOWpackages/admin/src/components/auth/PasskeyLogin.tsx176 // Step 2: Get assertion from browserCOMMENT
LOWpackages/admin/src/components/auth/PasskeyLogin.tsx207 // Step 3: Send credential to server for verificationCOMMENT
LOW…ages/admin/src/components/auth/PasskeyRegistration.tsx325 // Step 1: Get registration options from serverCOMMENT
LOW…ages/admin/src/components/auth/PasskeyRegistration.tsx339 // Step 2: Create credential with browserCOMMENT
LOW…ages/admin/src/components/auth/PasskeyRegistration.tsx371 // Step 3: Send credential to server for verificationCOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts197 // Step 1: Create invite via server-side APICOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts202 // Step 2: Set up virtual authenticatorCOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts206 // Step 3: Navigate to invite accept pageCOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts210 // Step 4: Verify the registration form rendersCOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts216 // Step 5: Fill in name and create a passkeyCOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts228 // Step 6: Confirm the completed passkey flow and continueCOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts232 // Step 7: Wait for the dashboard redirectCOMMENT
Structural Annotation Overuse41 hits · 77 pts
SeverityFileLineSnippetContext
LOW…ckages/core/tests/integration/auth/device-flow.test.ts123 // Step 1: Request device codeCOMMENT
LOW⚡…ckages/core/tests/integration/auth/device-flow.test.ts134 // Step 2: Poll before authorization → pendingCOMMENT
LOW⚡…ckages/core/tests/integration/auth/device-flow.test.ts142 // Step 3: User authorizes (admin role = 50)COMMENT
LOW⚡…ckages/core/tests/integration/auth/device-flow.test.ts150 // Step 4: Exchange for tokensCOMMENT
LOW⚡…ckages/core/tests/integration/auth/device-flow.test.ts164 // Step 5: Device code should be consumedCOMMENT
LOW⚡…ckages/core/tests/integration/auth/device-flow.test.ts172 // Step 6: Tokens should be storedCOMMENT
LOW⚡…core/tests/integration/auth/authorization-code.test.ts166 // Step 1: Generate PKCE pairCOMMENT
LOW⚡…core/tests/integration/auth/authorization-code.test.ts170 // Step 2: Get authorization codeCOMMENT
LOW…core/tests/integration/auth/authorization-code.test.ts186 // Step 3: Exchange code for tokensCOMMENT
LOW…core/tests/integration/auth/authorization-code.test.ts203 // Step 4: Verify tokens are storedCOMMENT
LOW…core/tests/integration/auth/authorization-code.test.ts215 // Step 5: Authorization code is consumed (single-use)COMMENT
LOW⚡…/core/tests/integration/client/oauth-discovery.test.ts43 // Step 1: get the authorization server URL from protected resource metadataCOMMENT
LOW⚡…/core/tests/integration/client/oauth-discovery.test.ts49 // Step 2: the SDK constructs /.well-known/oauth-authorization-server/_emdashCOMMENT
LOWpackages/core/src/cli/commands/login.ts208 // Step 1: Fetch auth discovery.COMMENT
LOWpackages/core/src/cli/commands/login.ts263 // Step 2: Request device codeCOMMENT
LOWpackages/core/src/cli/commands/login.ts285 // Step 3: Display instructionsCOMMENT
LOWpackages/core/src/cli/commands/login.ts307 // Step 4: Poll for tokenCOMMENT
LOWpackages/core/src/cli/commands/login.ts319 // Step 5: Fetch user infoCOMMENT
LOWpackages/core/src/cli/commands/login.ts346 // Step 6: Save credentials (persist custom headers so subsequent commands inherit them)COMMENT
LOW⚡packages/core/src/api/handlers/registry.ts614 // Step 1: look up the package by DID + slug. The browser alreadyCOMMENT
LOW⚡packages/core/src/api/handlers/registry.ts624 // Step 2: select the target release.COMMENT
LOW⚡packages/core/src/api/handlers/registry.ts1034 // Step 7: store in R2 under the registry prefix.COMMENT
LOW⚡packages/core/src/api/handlers/registry.ts1037 // Step 8: write plugin state.COMMENT
LOWpackages/core/src/api/handlers/registry.ts837 // Step 6: fetch bytes through an aggregator cache, the publisher PDS,COMMENT
LOW⚡packages/marketplace/src/workflows/audit.ts75 // Step 1: Run code auditCOMMENT
LOWpackages/marketplace/src/workflows/audit.ts96 // Step 2: Run image audit (skip if no images)COMMENT
LOWpackages/marketplace/src/workflows/audit.ts112 // Step 3: Store results in D1 and link to versionCOMMENT
LOWpackages/marketplace/src/workflows/audit.ts146 // Step 4: Resolve version status and update D1COMMENT
LOWpackages/admin/src/components/auth/PasskeyLogin.tsx162 // Step 1: Get authentication options from serverCOMMENT
LOWpackages/admin/src/components/auth/PasskeyLogin.tsx176 // Step 2: Get assertion from browserCOMMENT
LOWpackages/admin/src/components/auth/PasskeyLogin.tsx207 // Step 3: Send credential to server for verificationCOMMENT
LOW…ages/admin/src/components/auth/PasskeyRegistration.tsx325 // Step 1: Get registration options from serverCOMMENT
LOW…ages/admin/src/components/auth/PasskeyRegistration.tsx339 // Step 2: Create credential with browserCOMMENT
LOW…ages/admin/src/components/auth/PasskeyRegistration.tsx371 // Step 3: Send credential to server for verificationCOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts197 // Step 1: Create invite via server-side APICOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts202 // Step 2: Set up virtual authenticatorCOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts206 // Step 3: Navigate to invite accept pageCOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts210 // Step 4: Verify the registration form rendersCOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts216 // Step 5: Fill in name and create a passkeyCOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts228 // Step 6: Confirm the completed passkey flow and continueCOMMENT
LOW⚡e2e/tests/invite-flow.spec.ts232 // Step 7: Wait for the dashboard redirectCOMMENT
Modern AI Meta-Vocabulary27 hits · 66 pts
SeverityFileLineSnippetContext
MEDIUMinfra/perf-monitor/README.md122pnpm db:migrations:create # scaffold a new migration fileCODE
MEDIUMpackages/core/changelog/0.39.1-to-0.42.0.md63- [#3501](https://github.com/emdash-cms/emdash/pull/3501) [`4d6a87b`](https://github.com/emdash-cms/emdash/commit/4d6a87CODE
MEDIUMpackages/core/changelog/0.39.1-to-0.42.0.md63- [#3501](https://github.com/emdash-cms/emdash/pull/3501) [`4d6a87b`](https://github.com/emdash-cms/emdash/commit/4d6a87CODE
MEDIUMpackages/core/changelog/0.36.0-to-0.39.0.md148- [#3162](https://github.com/emdash-cms/emdash/pull/3162) [`a4af578`](https://github.com/emdash-cms/emdash/commit/a4af57CODE
MEDIUMpackages/core/changelog/0.36.0-to-0.39.0.md423- [#2351](https://github.com/emdash-cms/emdash/pull/2351) [`f0af9a1`](https://github.com/emdash-cms/emdash/commit/f0af9aCODE
MEDIUMpackages/core/changelog/0.36.0-to-0.39.0.md423- [#2351](https://github.com/emdash-cms/emdash/pull/2351) [`f0af9a1`](https://github.com/emdash-cms/emdash/commit/f0af9aCODE
MEDIUMpackages/core/src/transfer/domain.ts168 // Terms, menu items, and widgets are only scaffold on a site without content;COMMENT
MEDIUMpackages/cloudflare/CHANGELOG.md458- [#3162](https://github.com/emdash-cms/emdash/pull/3162) [`a4af578`](https://github.com/emdash-cms/emdash/commit/a4af57CODE
MEDIUMpackages/cloudflare/CHANGELOG.md514- [#2351](https://github.com/emdash-cms/emdash/pull/2351) [`f0af9a1`](https://github.com/emdash-cms/emdash/commit/f0af9aCODE
MEDIUMpackages/cloudflare/CHANGELOG.md514- [#2351](https://github.com/emdash-cms/emdash/pull/2351) [`f0af9a1`](https://github.com/emdash-cms/emdash/commit/f0af9aCODE
MEDIUMpackages/create-emdash/CHANGELOG.md77- [#2351](https://github.com/emdash-cms/emdash/pull/2351) [`f0af9a1`](https://github.com/emdash-cms/emdash/commit/f0af9aCODE
MEDIUMpackages/create-emdash/CHANGELOG.md77- [#2351](https://github.com/emdash-cms/emdash/pull/2351) [`f0af9a1`](https://github.com/emdash-cms/emdash/commit/f0af9aCODE
MEDIUM⚡packages/create-emdash/CHANGELOG.md178- [#900](https://github.com/emdash-cms/emdash/pull/900) [`b3d1f40`](https://github.com/emdash-cms/emdash/commit/b3d1f40bCODE
MEDIUM⚡packages/create-emdash/CHANGELOG.md178- [#900](https://github.com/emdash-cms/emdash/pull/900) [`b3d1f40`](https://github.com/emdash-cms/emdash/commit/b3d1f40bCODE
MEDIUM⚡packages/create-emdash/CHANGELOG.md184- [#859](https://github.com/emdash-cms/emdash/pull/859) [`3015280`](https://github.com/emdash-cms/emdash/commit/30152807CODE
MEDIUMpackages/create-emdash/CHANGELOG.md228- [#785](https://github.com/emdash-cms/emdash/pull/785) [`e0dd616`](https://github.com/emdash-cms/emdash/commit/e0dd6168CODE
MEDIUMpackages/create-emdash/CHANGELOG.md228- [#785](https://github.com/emdash-cms/emdash/pull/785) [`e0dd616`](https://github.com/emdash-cms/emdash/commit/e0dd6168CODE
MEDIUMpackages/create-emdash/tests/utils.test.ts236// scaffold-time-no-emdash-dep constraint) so both need their own tests.COMMENT
MEDIUMpackages/create-emdash/src/flags.ts127 // Positional name: first non-flag arg. We accept "." for "scaffold intoCOMMENT
MEDIUMpackages/plugin-cli/CHANGELOG.md219- [#3162](https://github.com/emdash-cms/emdash/pull/3162) [`a4af578`](https://github.com/emdash-cms/emdash/commit/a4af57CODE
MEDIUMpackages/plugin-cli/tests/init-scaffold.test.ts119 // `version` is intentionally omitted from the scaffold manifest;COMMENT
MEDIUMpackages/plugin-cli/tests/init-scaffold.test.ts210 // The scaffold wrote the real package.json over the stub.COMMENT
MEDIUMpackages/plugin-cli/tests/init-scaffold.test.ts232 // scaffold.ts). The exact order is part of the API surfaceCOMMENT
MEDIUMpackages/plugin-cli/tests/init-templates.test.ts76 // `version` deliberately omitted from the manifest scaffold —COMMENT
MEDIUMpackages/plugin-cli/tests/init-templates.test.ts267 // definePlugin must not appear in the scaffold — it'sCOMMENT
MEDIUMpackages/plugin-cli/src/init/templates.ts107 // plugins (no package.json) would set it here, but the scaffoldCOMMENT
MEDIUMpackages/plugin-test/CHANGELOG.md349- [#3162](https://github.com/emdash-cms/emdash/pull/3162) [`a4af578`](https://github.com/emdash-cms/emdash/commit/a4af57CODE
Hallucination Indicators3 hits · 30 pts
SeverityFileLineSnippetContext
CRITICALpackages/admin/tests/editor/table-controls.test.tsx294 expect(editor.state.doc.content.content.map((node) => node.type.name)).toEqual([CODE
CRITICALpackages/admin/tests/editor/toolbar.test.tsx632 const table = editor.state.doc.content.content.find(CODE
CRITICALpackages/admin/tests/editor/toolbar.test.tsx652 TableMap.get(editor.state.doc.content.content.find((node) => node.type.name === "table")!),CODE
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/query-counts-apply.yml91 // matches the workflow_run's head SHA. This is more robustCOMMENT
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippetContext
LOWapps/release-service/src/index.ts98export async function handleRequest(CODE