AI Slop Code Risk Monitor

embabel/embabel-agent

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

Agent framework for the JVM. Pronounced Em-BAY-bel /ɛmˈbeɪbəl/

4.7 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for embabel/embabel-agent, a Kotlin project with 4,542 GitHub stars. SynthScan examined 379,458 lines of code across 2188 source files, recording 452 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 4.7 (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.

4.7
Adjusted Signal
4.7
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
4.5K
Stars
Kotlin
Language
379.5K
Lines of Code
2.2K
Files
452
Pattern Hits
2026-10-31
Scan Date
0.05
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 1.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 14.1/100 · LOW

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

Agent Over-Engineering Ratio 6.4/100 · LOW

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

PR Review Velocity Impact 19.9/100 · LOW

Which changes need focused human review? 452 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 91HIGH 28MEDIUM 135LOW 198

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 452 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hallucination Indicators91 hits · 980 pts
SeverityFileLineSnippetContext
CRITICAL…/agent/a2a/server/support/AutonomyA2ARequestHandler.kt354 val objectMapper = tools.jackson.databind.json.JsonMapper.builder()CODE
CRITICAL…m/embabel/agent/config/models/openai/LLMStreamingIT.kt231 val prompt = org.springframework.ai.chat.prompt.Prompt("Say hello")STRING
CRITICAL…/config/models/ollama/LLMOllamaStreamingBuilderIT.java296 new org.springframework.ai.chat.prompt.Prompt("Say hello");CODE
CRITICAL…config/models/ollama/LangChain4jStreamingToolLoopIT.kt196 is SystemMessage -> dev.langchain4j.data.message.SystemMessage.from(message.content)CODE
CRITICAL…config/models/ollama/LangChain4jStreamingToolLoopIT.kt197 is UserMessage -> dev.langchain4j.data.message.UserMessage.from(message.content)CODE
CRITICAL…servability/OpenTelemetrySdkAutoConfigurationTest.java203 io.opentelemetry.api.common.Attributes.of(ServiceAttributes.SERVICE_NAME, "custom-service")CODE
CRITICAL…bility/observation/ChatModelObservationFilterTest.java353 .isEqualTo(io.opentelemetry.api.trace.SpanId.getInvalid());CODE
CRITICAL…bility/observation/ChatModelObservationFilterTest.java420 .isEqualTo(io.opentelemetry.api.trace.SpanId.getInvalid());CODE
CRITICAL…bility/observation/ChatModelObservationFilterTest.java528 .isNotEqualTo(io.opentelemetry.api.trace.SpanId.getInvalid());CODE
CRITICAL…che/support/HitlJCachePersistenceMvcIntegrationTest.kt113@com.embabel.agent.api.annotation.Agent(description = "Cache adventure agent requiring user choices")CODE
CRITICAL…bel/agent/rag/lucene/LuceneSearchOperationsTestBase.kt60 com.embabel.agent.rag.model.Chunk(CODE
CRITICAL…el/agent/jdbc/HitlJdbcPersistenceMvcIntegrationTest.kt111@com.embabel.agent.api.annotation.Agent(description = "JDBC adventure agent requiring user choices")CODE
CRITICAL…mbabel/agent/jdbc/JdbcAgentProcessSnapshotStoreTest.kt156 ) = com.embabel.agent.spi.persistence.SerializedAgentProcessSnapshot(CODE
CRITICAL…src/test/kotlin/com/embabel/agent/skills/SkillsTest.kt672 val ctx = com.embabel.agent.api.tool.ToolCallContext.of(com.embabel.agent.api.tool.ToolCallContext.LOOP_ID_KEY tCODE
CRITICAL…src/test/kotlin/com/embabel/agent/skills/SkillsTest.kt708 com.embabel.agent.api.tool.ToolCallContext.of(com.embabel.agent.api.tool.ToolCallContext.LOOP_ID_KEY to "looCODE
CRITICAL…src/test/kotlin/com/embabel/agent/skills/SkillsTest.kt712 com.embabel.agent.api.tool.ToolCallContext.of(com.embabel.agent.api.tool.ToolCallContext.LOOP_ID_KEY to "looCODE
CRITICAL…/agent/api/annotation/support/PackageVisibleTests.java146@com.embabel.agent.api.annotation.Agent(description = "foo bar")CODE
CRITICAL…ation/support/state/PolymorphicStateInterfaceTest.java119 @com.embabel.agent.api.annotation.Agent(description = "Feature select agent")CODE
CRITICAL…api/src/test/kotlin/com/embabel/chat/MultimodalTest.kt275 com.embabel.agent.api.reference.LlmReference.of(name, "desc", emptyList())CODE
CRITICAL…est/kotlin/com/embabel/chat/ConversationFactoryTest.kt49 user = com.embabel.agent.api.identity.SimpleUser(CODE
CRITICAL…in/com/embabel/plan/goap/astar/AStarGoapPlannerTest.kt537 val planner = _root_ide_package_.com.embabel.plan.goap.astar.AStarGoapPlanner(CODE
CRITICAL…m/embabel/agent/core/support/SimpleAgentProcessTest.kt57@com.embabel.agent.api.annotation.Agent(CODE
CRITICAL…m/embabel/agent/core/support/SimpleAgentProcessTest.kt78@com.embabel.agent.api.annotation.Agent(CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt646 val tool = com.embabel.agent.api.tool.Tool.of("test_tool", "A test tool") {CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt647 com.embabel.agent.api.tool.Tool.Result.text("ok")CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt649 val toolGroup = com.embabel.agent.core.ToolGroup.ofTools(CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt674 val tool1 = com.embabel.agent.api.tool.Tool.of("tool_one", "First tool") {CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt675 com.embabel.agent.api.tool.Tool.Result.text("one")CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt677 val tool2 = com.embabel.agent.api.tool.Tool.of("tool_two", "Second tool") {CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt678 com.embabel.agent.api.tool.Tool.Result.text("two")CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt680 val toolGroup = com.embabel.agent.core.ToolGroup.ofTools(CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt707 val tool = com.embabel.agent.api.tool.Tool.of("chained_tool", "Chained tool") {CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt708 com.embabel.agent.api.tool.Tool.Result.text("chained")CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt710 val toolGroup = com.embabel.agent.core.ToolGroup.ofTools(CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt740 val tool = com.embabel.agent.api.tool.Tool.of("immutable_tool", "Immutable tool") {CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt741 com.embabel.agent.api.tool.Tool.Result.text("immutable")CODE
CRITICAL⚡…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt743 val toolGroup = com.embabel.agent.core.ToolGroup.ofTools(CODE
CRITICAL…in/com/embabel/agent/test/unit/FakePromptRunnerTest.kt861 @com.embabel.agent.api.annotation.LlmTool(description = "Test tool")CODE
CRITICAL…t/spi/config/spring/ActionRetryPolicyPropertiesTest.kt149@com.embabel.agent.api.annotation.Agent(CODE
CRITICAL…t/spi/config/spring/ActionRetryPolicyPropertiesTest.kt167@com.embabel.agent.api.annotation.Agent(CODE
CRITICAL⚡…gent/spi/support/AgentProcessContextPropagationTest.kt331 override val definition = com.embabel.agent.api.tool.Tool.Definition(CODE
CRITICAL⚡…gent/spi/support/AgentProcessContextPropagationTest.kt334 inputSchema = com.embabel.agent.api.tool.Tool.InputSchema.empty(),CODE
CRITICAL⚡…gent/spi/support/AgentProcessContextPropagationTest.kt336 override fun call(input: String) = com.embabel.agent.api.tool.Tool.Result.text("check")CODE
CRITICAL⚡…gent/spi/support/AgentProcessContextPropagationTest.kt340 val conditionalTool = com.embabel.agent.api.tool.ConditionalReplanningTool(CODE
CRITICAL⚡…gent/spi/support/AgentProcessContextPropagationTest.kt344 com.embabel.agent.api.tool.ReplanDecision(reason = "Captured context")CODE
CRITICAL…ent/spi/support/ChatClientLlmOperationsThinkingTest.kt321 com.embabel.common.core.thinking.ThinkingBlock(STRING
CRITICAL…ent/spi/support/ChatClientLlmOperationsThinkingTest.kt343 val originalOptions = com.embabel.common.ai.model.LlmOptions()STRING
CRITICAL…ent/spi/support/ChatClientLlmOperationsThinkingTest.kt346 val withThinking = originalOptions.withThinking(com.embabel.common.ai.model.Thinking.withExtraction())STRING
CRITICAL…ent/spi/support/ChatClientLlmOperationsThinkingTest.kt365 val extractionThinking = com.embabel.common.ai.model.Thinking.withExtraction()STRING
CRITICAL…ent/spi/support/ChatClientLlmOperationsThinkingTest.kt369 val budgetThinking = com.embabel.common.ai.model.Thinking.withTokenBudget(150)STRING
CRITICAL…ent/spi/support/ChatClientLlmOperationsThinkingTest.kt381 val originalOptions = com.embabel.common.ai.model.LlmOptions()STRING
CRITICAL…embabel/agent/spi/support/ToolLoopLlmOperationsTest.kt1769 pricingModel = com.embabel.common.ai.model.PricingModel.usdPer1MTokens(1.0, 2.0),CODE
CRITICAL…embabel/agent/spi/support/ToolLoopLlmOperationsTest.kt1853 pricingModel = com.embabel.common.ai.model.PricingModel.usdPer1MTokens(1.0, 0.0),CODE
CRITICAL…m/embabel/agent/spi/support/EmbeddingOperationsTest.kt310 val ex = org.junit.jupiter.api.Assertions.assertThrows(IllegalStateException::class.java) {CODE
CRITICAL…m/embabel/agent/spi/support/EmbeddingOperationsTest.kt332 org.junit.jupiter.api.Assertions.assertThrows(IllegalStateException::class.java) {CODE
CRITICAL…ent/spi/support/springai/SafelyGetToolCallbacksTest.kt46 @org.springframework.ai.tool.annotation.Tool(description = "Spring tool")CODE
CRITICAL…gent/spi/support/springai/InstrumentedChatModelTest.kt168 val options = org.springframework.ai.model.tool.ToolCallingChatOptions.builder()CODE
CRITICAL…gent/spi/support/springai/InstrumentedChatModelTest.kt195 val options = org.springframework.ai.model.tool.ToolCallingChatOptions.builder()CODE
CRITICAL…gent/spi/support/springai/InstrumentedChatModelTest.kt211 val options = org.springframework.ai.model.tool.ToolCallingChatOptions.builder()CODE
CRITICAL⚡…t/spi/support/springai/SpringAiLlmMessageSenderTest.kt700 override val definition = com.embabel.agent.api.tool.Tool.Definition(CODE
31 more matches not shown…
Decorative Section Separators115 hits · 382 pts
SeverityFileLineSnippetContext
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml1# ============================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml3# ============================================COMMENT
MEDIUM⚡…nfigure/src/main/resources/models/anthropic-models.yml32 # ========================================COMMENT
MEDIUM⚡…nfigure/src/main/resources/models/anthropic-models.yml37 # ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml82 # ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml84 # ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml97 # ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml99 # ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml120 # ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml122 # ========================================COMMENT
MEDIUM⚡…oconfigure/src/main/resources/models/gemini-models.yml6 # ========================================COMMENT
MEDIUM⚡…oconfigure/src/main/resources/models/gemini-models.yml8 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/gemini-models.yml21 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/gemini-models.yml23 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/gemini-models.yml36 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/gemini-models.yml38 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/gemini-models.yml84 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/gemini-models.yml86 # ========================================COMMENT
MEDIUM…nfig/models/openai/OpenAiNativeStructuredOutputIT.java87 // ── Data classes ────────────────────────────────────────────────────────COMMENT
MEDIUM…nfig/models/openai/OpenAiNativeStructuredOutputIT.java114 // ── Flat object ──────────────────────────────────────────────────────────COMMENT
MEDIUM…nfig/models/openai/OpenAiNativeStructuredOutputIT.java146 // ── Array of objects ─────────────────────────────────────────────────────COMMENT
MEDIUM…nfig/models/openai/OpenAiNativeStructuredOutputIT.java168 // ── DEFAULT mode ──────────────────────────────────────────────────────────COMMENT
MEDIUM⚡…oconfigure/src/main/resources/models/openai-models.yml416 # ========================================COMMENT
MEDIUM⚡…oconfigure/src/main/resources/models/openai-models.yml418 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml1# ============================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml3# ============================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml43 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml54 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml120 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml138 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml190 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml193 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml226 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml230 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml294 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml296 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml329 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml332 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml349 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml353 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml454 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml456 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml476# ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml478# ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/dashscope-models.yml1# ============================================COMMENT
MEDIUM…nfigure/src/main/resources/models/dashscope-models.yml3# ============================================COMMENT
MEDIUM⚡…gure/src/main/resources/models/google-genai-models.yml1# ============================================COMMENT
MEDIUM⚡…gure/src/main/resources/models/google-genai-models.yml3# ============================================COMMENT
MEDIUM⚡…gure/src/main/resources/models/google-genai-models.yml9 # ========================================COMMENT
MEDIUM⚡…gure/src/main/resources/models/google-genai-models.yml11 # ========================================COMMENT
MEDIUM⚡…gure/src/main/resources/models/google-genai-models.yml20 # ========================================COMMENT
MEDIUM⚡…gure/src/main/resources/models/google-genai-models.yml22 # ========================================COMMENT
MEDIUM…gure/src/main/resources/models/google-genai-models.yml46 # ========================================COMMENT
MEDIUM…gure/src/main/resources/models/google-genai-models.yml48 # ========================================COMMENT
MEDIUM…gure/src/main/resources/models/google-genai-models.yml72 # ========================================COMMENT
MEDIUM…gure/src/main/resources/models/google-genai-models.yml74 # ========================================COMMENT
MEDIUM…gure/src/main/resources/models/google-genai-models.yml87 # ========================================COMMENT
MEDIUM…gure/src/main/resources/models/google-genai-models.yml89 # ========================================COMMENT
MEDIUM…gure/src/main/resources/models/google-genai-models.yml137 # ========================================COMMENT
MEDIUM…gure/src/main/resources/models/google-genai-models.yml139 # ========================================COMMENT
55 more matches not shown…
Fake / Example Data135 hits · 139 pts
SeverityFileLineSnippetContext
LOW…/agent/config/models/dashscope/DashScopeAllModelsIT.kt58 "embabel.agent.platform.models.dashscope.api-key=\${DASHSCOPE_API_KEY:dummy-key-for-context-loading}",CODE
LOW…nt/config/models/googlegenai/GoogleGenAiEmbeddingIT.kt43 "embabel.agent.platform.models.googlegenai.api-key=\${GOOGLE_API_KEY:\${GEMINI_API_KEY:dummy-key-for-context-loaCODE
LOW…fig/models/googlegenai/GoogleGenAiChatIntegrationIT.kt59 "embabel.agent.platform.models.googlegenai.api-key=\${GOOGLE_API_KEY:\${GEMINI_API_KEY:dummy-key-for-context-loaCODE
LOW…nt/config/models/googlegenai/GoogleGenAiAllModelsIT.kt60 "embabel.agent.platform.models.googlegenai.api-key=\${GOOGLE_API_KEY:\${GEMINI_API_KEY:dummy-key-for-context-loaCODE
LOW…config/models/googlegenai/GoogleGenAiToolResponseIT.kt57 "embabel.agent.platform.models.googlegenai.api-key=\${GOOGLE_API_KEY:\${GEMINI_API_KEY:dummy-key-for-conCODE
LOW…/com/embabel/agent/config/models/zai/ZaiAllModelsIT.kt74 "embabel.agent.platform.models.zai.api-key=\${ZAI_API_KEY:dummy-key-for-context-loading}",CODE
LOW⚡…bel/agent/rag/model/JavaInterfaceRelationshipTest.java119 NamedEntityData address1 = createAddress("a1", "123 Main St", "Springfield");CODE
LOW⚡…bel/agent/rag/model/JavaInterfaceRelationshipTest.java129 assertEquals("123 Main St", addresses.get(0).getStreet());CODE
LOW⚡…bel/agent/rag/model/JavaInterfaceRelationshipTest.java136 NamedEntityData company = createCompany("c1", "Acme Corp", "Technology");CODE
LOW⚡…bel/agent/rag/model/JavaInterfaceRelationshipTest.java144 assertEquals("Acme Corp", employer.getName());CODE
LOW⚡…bel/agent/rag/model/JavaInterfaceRelationshipTest.java151 NamedEntityData address1 = createAddress("a1", "123 Main St", "Springfield");CODE
LOW…bel/agent/rag/model/JavaInterfaceRelationshipTest.java167 NamedEntityData company = createCompany("c1", "Acme Corp", "Technology");CODE
LOW…bel/agent/rag/model/JavaInterfaceRelationshipTest.java175 assertEquals("Acme Corp", name);CODE
LOW…/service/JavaRepositoryRelationshipNavigationTest.java103 NamedEntityData address1 = createAddress("a1", "123 Main St", "Springfield");CODE
LOW…/service/JavaRepositoryRelationshipNavigationTest.java130 assertEquals("123 Main St", addresses.get(0).getStreet());CODE
LOW…/service/JavaRepositoryRelationshipNavigationTest.java137 NamedEntityData company = createCompany("c1", "Acme Corp", "Technology");CODE
LOW…/service/JavaRepositoryRelationshipNavigationTest.java153 assertEquals("Acme Corp", employer.getName());CODE
LOW…/service/JavaRepositoryRelationshipNavigationTest.java187 NamedEntityData address1 = createAddress("a1", "123 Main St", "Springfield");CODE
LOW…bel/agent/rag/ContentElementPropertiesToPersistTest.kt33 "author" to "John Doe",CODE
LOW…bel/agent/rag/ContentElementPropertiesToPersistTest.kt45 assertEquals("John Doe", properties["author"])CODE
LOW…bel/agent/rag/ContentElementPropertiesToPersistTest.kt336 "author" to "John Doe",CODE
LOW…bel/agent/rag/ContentElementPropertiesToPersistTest.kt350 assertEquals("John Doe", properties["author"])CODE
LOW…om/embabel/agent/rag/model/NamedEntityHydrationTest.kt116 name = "Acme Corp",CODE
LOW…om/embabel/agent/rag/model/NamedEntityHydrationTest.kt337 name = "Acme Corp",CODE
LOW…om/embabel/agent/rag/model/NamedEntityHydrationTest.kt350 assertEquals("Acme Corp", org.name)CODE
LOW…el/agent/rag/model/NamedEntityInvocationHandlerTest.kt128 val address1 = createAddress("a1", "123 Main St", "Springfield")CODE
LOW…el/agent/rag/model/NamedEntityInvocationHandlerTest.kt138 assertEquals("123 Main St", addresses[0].street)CODE
LOW⚡…el/agent/rag/model/NamedEntityInvocationHandlerTest.kt166 val company = createCompany("c1", "Acme Corp", "Technology")CODE
LOW⚡…el/agent/rag/model/NamedEntityInvocationHandlerTest.kt174 assertEquals("Acme Corp", employer?.name)CODE
LOW⚡…el/agent/rag/model/NamedEntityInvocationHandlerTest.kt181 val company = createCompany("c1", "Acme Corp", "Technology")CODE
LOW⚡…el/agent/rag/model/NamedEntityInvocationHandlerTest.kt190 assertEquals("Acme Corp", employer?.name)CODE
LOW⚡…el/agent/rag/model/NamedEntityInvocationHandlerTest.kt196 val address1 = createAddress("a1", "123 Main St", "Springfield")CODE
LOW…el/agent/rag/model/NamedEntityInvocationHandlerTest.kt222 val address1 = createAddress("a1", "123 Main St", "Springfield")CODE
LOW…el/agent/rag/model/NamedEntityInvocationHandlerTest.kt248 val company = createCompany("c1", "Acme Corp", "Technology")CODE
LOW…el/agent/rag/model/NamedEntityInvocationHandlerTest.kt256 assertEquals("Acme Corp", name)CODE
LOW…/embabel/agent/rag/lucene/LuceneChunkRepositoryTest.kt102 "author" to "John Doe",CODE
LOW…/embabel/agent/rag/lucene/LuceneChunkRepositoryTest.kt117 assertEquals("John Doe", chunk.metadata["author"])CODE
LOW…embabel/agent/rag/lucene/LuceneSearchOperationsTest.kt153 val metadata = mapOf("author" to "John Doe", "category" to "AI")CODE
LOW…embabel/agent/rag/lucene/LuceneSearchOperationsTest.kt167 assertEquals("John Doe", result.match.metadata["author"])CODE
LOW…/kotlin/com/embabel/agent/domain/library/PersonTest.kt29 val person = PersonImpl("John Doe")CODE
LOW…/kotlin/com/embabel/agent/domain/library/PersonTest.kt32 assertEquals("John Doe", person.name)CODE
LOW…rters/streaming/StreamingJacksonOutputConverterTest.kt286 {"name": "Alice", "age": 30, "email": "alice@test.com", "address": "123 Main St"}CODE
LOW…rters/streaming/StreamingJacksonOutputConverterTest.kt394 {"name": "Alice", "age": 30, "email": "alice@test.com", "address": "123 Main St"}CODE
LOW…/agent/api/annotation/support/PackageVisibleTests.java86 pc.getBlackboard().plusAssign(new PackageInput("John Doe"));CODE
LOW…/agent/api/annotation/support/PackageVisibleTests.java89 assertEquals(new PackageOutput("John Doe"), pc.getBlackboard().lastResult());CODE
LOW…/agent/api/annotation/support/PackageVisibleTests.java119 pc.getBlackboard().plusAssign(new PackageInput("John Doe"));CODE
LOW…/agent/api/common/workflow/RepeatUntilBuilderTest.java277 Map.of("it", new UserInput("input"), "person", new Person("John Doe", 30))CODE
LOW…/agent/api/common/workflow/RepeatUntilBuilderTest.java303 Map.of("it", new UserInput("input"), "person", new Person("John Doe", 30))CODE
LOW…/com/embabel/agent/core/hitl/FormBindingRequestTest.kt102 "name" to "John Doe",CODE
LOW…/com/embabel/agent/core/hitl/FormBindingRequestTest.kt121 val testData = TestData("John Doe", "john@example.com")CODE
LOW…/com/embabel/agent/core/hitl/FormBindingRequestTest.kt137 "name" to "John Doe"CODE
LOW…babel/agent/spi/support/ChatClientLlmOperationsTest.kt186 "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et CODE
LOW…babel/agent/spi/support/ChatClientLlmOperationsTest.kt186 "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et CODE
LOW…babel/agent/spi/support/ChatClientLlmOperationsTest.kt1018 "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et CODE
LOW…babel/agent/spi/support/ChatClientLlmOperationsTest.kt1018 "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et CODE
LOW…babel/agent/spi/support/ChatClientLlmOperationsTest.kt1046 "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et CODE
LOW…babel/agent/spi/support/ChatClientLlmOperationsTest.kt1046 "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et CODE
LOW…babel/agent/spi/support/ChatClientLlmOperationsTest.kt1078 "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et CODE
LOW…babel/agent/spi/support/ChatClientLlmOperationsTest.kt1078 "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et CODE
LOW…babel/agent/spi/support/ChatClientLlmOperationsTest.kt1108 "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et CODE
75 more matches not shown…
Cross-File Repetition24 hits · 120 pts
SeverityFileLineSnippetContext
HIGHREADME.md0create a person from this user input, extracting their name and star sign: ${userinput.content}STRING
HIGH…/example/simple/horoscope/java/TestStarNewsFinder.java0create a person from this user input, extracting their name and star sign: ${userinput.content}STRING
HIGH…/example/simple/horoscope/kotlin/TestStarNewsFinder.kt0create a person from this user input, extracting their name and star sign: ${userinput.content}STRING
HIGH…/example/simple/horoscope/kotlin/TestStarNewsFinder.kt0create a person from this user input, extracting their name and star sign: ${userinput.content}STRING
HIGHREADME.md0${person.name} is an astrology believer with the sign ${person.sign}. their horoscope for today is: <horoscope>${horoscoSTRING
HIGH…/example/simple/horoscope/java/TestStarNewsFinder.java0${person.name} is an astrology believer with the sign ${person.sign}. their horoscope for today is: <horoscope>${horoscoSTRING
HIGH…/example/simple/horoscope/kotlin/TestStarNewsFinder.kt0${person.name} is an astrology believer with the sign ${person.sign}. their horoscope for today is: <horoscope>${horoscoSTRING
HIGH…/example/simple/horoscope/kotlin/TestStarNewsFinder.kt0${person.name} is an astrology believer with the sign ${person.sign}. their horoscope for today is: <horoscope>${horoscoSTRING
HIGHREADME.md0take the following news stories and write up something amusing for the target person in $wordcount words. begin by summaSTRING
HIGH…/example/simple/horoscope/kotlin/TestStarNewsFinder.kt0take the following news stories and write up something amusing for the target person in $wordcount words. begin by summaSTRING
HIGH…/example/simple/horoscope/kotlin/TestStarNewsFinder.kt0take the following news stories and write up something amusing for the target person in $wordcount words. begin by summaSTRING
HIGH…dbc/JdbcAutoConfigurationPersistenceIntegrationTest.kt0create table if not exists agent_process_snapshots ( process_id varchar(255) not null, parent_id varchar(255), agent_namSTRING
HIGH…el/agent/jdbc/HitlJdbcPersistenceMvcIntegrationTest.kt0create table if not exists agent_process_snapshots ( process_id varchar(255) not null, parent_id varchar(255), agent_namSTRING
HIGH…mbabel/agent/jdbc/JdbcAgentProcessSnapshotStoreTest.kt0create table if not exists agent_process_snapshots ( process_id varchar(255) not null, parent_id varchar(255), agent_namSTRING
HIGH…gration/EmbabelMockitoIntegrationTestBlockingTest.java0revise a short story in %d words or less. the story should be engaging and imaginative. use the user's input as inspiratSTRING
HIGH…ration/EmbabelMockitoIntegrationTestStreamingTest.java0revise a short story in %d words or less. the story should be engaging and imaginative. use the user's input as inspiratSTRING
HIGH…/api/annotation/support/state/WriteAndReviewAgent.java0revise a short story in %d words or less. the story should be engaging and imaginative. use the user's input as inspiratSTRING
HIGH…gration/EmbabelMockitoIntegrationTestBlockingTest.java0you will be given a short story to review. review it in %d words or less. consider whether or not the story is engaging,STRING
HIGH…ration/EmbabelMockitoIntegrationTestStreamingTest.java0you will be given a short story to review. review it in %d words or less. consider whether or not the story is engaging,STRING
HIGH…/api/annotation/support/state/WriteAndReviewAgent.java0you will be given a short story to review. review it in %d words or less. consider whether or not the story is engaging,STRING
HIGH…thinking/support/ThinkingPromptRunnerOperationsImpl.kt0evaluate this condition given the context. return "result": whether you think it is true, your confidence level from 0-1STRING
HIGH…ent/api/common/support/OperationContextPromptRunner.kt0evaluate this condition given the context. return "result": whether you think it is true, your confidence level from 0-1STRING
HIGH…l/agent/api/common/support/OperationContextDelegate.kt0evaluate this condition given the context. return "result": whether you think it is true, your confidence level from 0-1STRING
HIGH…/api/common/support/DelegatingStreamingPromptRunner.kt0evaluate this condition given the context. return "result": whether you think it is true, your confidence level from 0-1STRING
Modern AI Meta-Vocabulary17 hits · 54 pts
SeverityFileLineSnippetContext
MEDIUM⚡…nfigure/src/main/resources/models/anthropic-models.yml39 # Claude Fable 5.1 - Demanding reasoning and long-horizon agentic workCOMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml50 # Claude Opus 5.5 - Long-running agentic coding and knowledge workCOMMENT
MEDIUM⚡…oconfigure/src/main/resources/models/openai-models.yml417 # GPT-4.1 FAMILY (April 2025 - 1M token context window)COMMENT
MEDIUM⚡…gure/src/main/resources/models/google-genai-models.yml179 # Gemini Embedding 2 - Latest embedding model (GA)COMMENT
MEDIUMembabel-agent-rag/embabel-agent-rag-pipeline/README.md1# RAG Pipeline Support: ObsoleteCOMMENT
MEDIUM…/src/main/kotlin/com/embabel/agent/rag/model/README.md1# RAG integration for agentCOMMENT
MEDIUM…src/main/kotlin/com/embabel/agent/rag/filter/README.md1# RAG FilteringCOMMENT
MEDIUMembabel-agent-docs/llms-txt-extension.js45 llmsContent += `- [Embabel Cookbook](https://github.com/embabel/embabel-cookbook/blob/main/README.md): Practical rCODE
MEDIUM…embabel/agent/api/termination/TerminationJavaTest.java100 // Java interop for these is tested via the agentic integration tests in TerminationAgenticTest.COMMENT
MEDIUM…nt/spi/support/ChatClientLlmOperationsGuardRailTest.kt746 // Verify all guardrails were calledCOMMENT
MEDIUM…t/kotlin/com/embabel/agent/api/tool/AgenticToolTest.kt517 // The nested agentic should not be wrappedCOMMENT
MEDIUM…t/kotlin/com/embabel/agent/api/tool/AgenticToolTest.kt536 // The nested agentic should be wrappedCOMMENT
MEDIUM…embabel/common/core/validation/ValidationResultTest.kt81 // Given - Real guardrails use case: determine highest severity from multiple errorsCOMMENT
MEDIUM…/com/embabel/agent/tools/blackboard/BlackboardTools.kt43 * // Add to an agentic toolCOMMENT
MEDIUM…n/com/embabel/agent/tools/process/AgentProcessTools.kt38 * // Add to an agentic toolCOMMENT
MEDIUM…agent/spi/support/guardrails/llmOperationGuardRails.kt49 // Merge global and interaction-specific guardrails, removing duplicates by classCOMMENT
MEDIUM…agent/spi/support/guardrails/llmOperationGuardRails.kt101 // Merge global and interaction-specific guardrails, removing duplicates by classCOMMENT
Over-Commented Block36 hits · 32 pts
SeverityFileLineSnippetContext
LOW…nfigure/src/main/resources/models/anthropic-models.yml1# ============================================COMMENT
LOW…nfigure/src/main/resources/models/anthropic-models.yml21 options:COMMENT
LOW…oconfigure/src/main/resources/models/openai-models.yml1# ============================================COMMENT
LOW…oconfigure/src/main/resources/models/openai-models.yml41COMMENT
LOW…oconfigure/src/main/resources/models/openai-models.yml121 # GPT-5.6 FAMILY (July 2026)COMMENT
LOW…gure/src/main/resources/models/google-genai-models.yml1# ============================================COMMENT
LOW…gure/observability/ObservabilityAutoConfiguration.java141 */COMMENT
LOW…/support/PerGoalAsyncMcpToolExportCallbackPublisher.kt121// name = event.name,COMMENT
LOW…/sync/support/PerGoalMcpExportToolCallbackPublisher.kt121 when {COMMENT
LOW…/sync/support/PerGoalMcpExportToolCallbackPublisher.kt141// logger.info("MCP Tool Export Callback Publisher adding resource {}", uri)COMMENT
LOW…che/support/HitlJCachePersistenceMvcIntegrationTest.kt421 * [cacheManager] bean for the backend of your choice. Every other beanCOMMENT
LOW…che/support/HitlJCachePersistenceMvcIntegrationTest.kt441 // @BeanCOMMENT
LOW…che/support/HitlJCachePersistenceMvcIntegrationTest.kt461 // The region is created on first access; no up-front schema needed.COMMENT
LOW…/kotlin/com/embabel/agent/rag/tools/CoreSearchTools.kt321 // NEVER blend documents. Similar documents share section names (contracts,COMMENT
LOW…embabel/agent/rag/service/NamedEntityDataRepository.kt661 // `:User` / `:StoredUser`). Proxying those and casting to NamedEntity inCOMMENT
LOW…-test-internal/src/main/resources/application-test.yml21COMMENT
LOW…el/agent/jdbc/HitlJdbcPersistenceMvcIntegrationTest.kt441 // })COMMENT
LOW…el/agent/jdbc/HitlJdbcPersistenceMvcIntegrationTest.kt461 // Named so the test can inject it directly for schema init and cleanup.COMMENT
LOW…el/agent/jdbc/HitlJdbcPersistenceMvcIntegrationTest.kt481 // In production you do not need a named qualifier.COMMENT
LOW…skills/script/ProcessSkillScriptExecutionEngineTest.kt361COMMENT
LOW…skills/script/ProcessSkillScriptExecutionEngineTest.kt401 @TestCOMMENT
LOW…nt/skills/support/InstructionFileReferenceExtractor.kt41 // using ``` or ~~~, at any indentation (so fences nested inside listCOMMENT
LOW…/com/embabel/common/ai/converters/enumSchemaSupport.kt141 // Holds the serialised constant value and its optional description.COMMENT
LOW…c/src/main/kotlin/com/embabel/agent/web/rest/README.md1# Endpoints to expose agent platform informationCOMMENT
LOW…bel/agent/spi/support/PromptAssemblyPerformanceTest.kt141 val many = median(manySetup)COMMENT
LOW…pi/annotation/support/AgentMetadataReaderActionTest.kt1121// assertEquals(2, action.toolGroups.size, "Had ${action.toolGroups} tool groups, expected 1")COMMENT
LOW…kotlin/com/embabel/agent/api/dsl/MapperParallelTest.kt81// val concurrencyLevel = 4COMMENT
LOW…n/kotlin/com/embabel/agent/tools/file/FileReadTools.kt301// ├── README.md ← root-level fileCOMMENT
LOW…rc/main/kotlin/com/embabel/agent/tools/agent/README.md1# Support for creating Tools from Embabel AgentsCOMMENT
LOW…el/agent/spi/support/springai/InstrumentedChatModel.kt121 // Instead it calls the interface's own default implementation, whichCOMMENT
LOW…agent/spi/support/springai/SpringAiLlmMessageSender.kt101 // --- Select the answer generation [A] and capture reasoning [B] separately ---COMMENT
LOW…agent/spi/support/springai/SpringAiLlmMessageSender.kt221COMMENT
LOW…main/kotlin/com/embabel/agent/api/invocation/README.md1# AgentProcess invocation supportCOMMENT
LOW…pi/src/main/kotlin/com/embabel/agent/api/dsl/README.md1# Kotlin DSL for writing agentsCOMMENT
LOW…m/embabel/common/ai/model/ConfigurableModelProvider.kt941 return resolvedCOMMENT
LOW…m/embabel/common/ai/model/ConfigurableModelProvider.kt1081 "Role '{}' has no model configured for provider '{}' under embabel.models.roles",COMMENT
Magic Placeholder Names4 hits · 30 pts
SeverityFileLineSnippetContext
HIGH…onfig/models/openai/custom/OpenAiCustomModelsConfig.kt111 * OPENAI_CUSTOM_API_KEY=your-api-keyCOMMENT
HIGH…bel/agent/config/models/minimax/MiniMaxModelsConfig.kt97 * MINIMAX_API_KEY=your-api-keyCOMMENT
HIGH…agent/config/models/dashscope/DashScopeModelsConfig.kt107 * DASHSCOPE_API_KEY=your-api-keyCOMMENT
HIGH…com/embabel/agent/config/models/zai/ZaiModelsConfig.kt109 * ZAI_API_KEY=your-api-keyCOMMENT
Verbosity Indicators13 hits · 26 pts
SeverityFileLineSnippetContext
LOW⚡…om/embabel/agent/skills/SkillsScriptIntegrationTest.kt168 // Step 1: Create initial SkillsCOMMENT
LOW⚡…om/embabel/agent/skills/SkillsScriptIntegrationTest.kt172 // Step 2: Add skill (simulates withGitHubUrl)COMMENT
LOW⚡…om/embabel/agent/skills/SkillsScriptIntegrationTest.kt177 // Step 3: Add engine - script tools should now appearCOMMENT
LOW⚡…om/embabel/agent/skills/SkillsScriptIntegrationTest.kt186 // Step 4: Activate to get instructionsCOMMENT
LOW…n/com/embabel/agent/e2e/LLMStreamingIntegrationTest.kt234 // Step 1: Test basic non-streaming model with established patternCOMMENT
LOW…/embabel/agent/spi/config/spring/AsyncConfiguration.kt84 // Step 3: Attempt to get shared executor if enabledCOMMENT
LOW…/embabel/agent/spi/config/spring/AsyncConfiguration.kt97 // Step 4: Create isolated raw JDK executor (no Spring lifecycle)COMMENT
LOW…rt/springai/streaming/StreamingChatClientOperations.kt381 // Step 1: Original raw chunk stream from LLMCOMMENT
LOW⚡…rt/springai/streaming/StreamingChatClientOperations.kt393 // Step 2: Transform raw chunks to complete newline-delimited linesCOMMENT
LOW⚡…rt/springai/streaming/StreamingChatClientOperations.kt398 // Step 3: Final flux of StreamingEvent (thinking + objects)COMMENT
LOW…nt/spi/support/streaming/StreamingLlmOperationsImpl.kt237 // Step 1: Raw chunk stream from LLMCOMMENT
LOW⚡…nt/spi/support/streaming/StreamingLlmOperationsImpl.kt248 // Step 2: Transform raw chunks to complete newline-delimited linesCOMMENT
LOW⚡…nt/spi/support/streaming/StreamingLlmOperationsImpl.kt253 // Step 3: Convert lines to StreamingEvent (thinking + objects)COMMENT
Structural Annotation Overuse13 hits · 26 pts
SeverityFileLineSnippetContext
LOW⚡…om/embabel/agent/skills/SkillsScriptIntegrationTest.kt168 // Step 1: Create initial SkillsCOMMENT
LOW⚡…om/embabel/agent/skills/SkillsScriptIntegrationTest.kt172 // Step 2: Add skill (simulates withGitHubUrl)COMMENT
LOW⚡…om/embabel/agent/skills/SkillsScriptIntegrationTest.kt177 // Step 3: Add engine - script tools should now appearCOMMENT
LOW⚡…om/embabel/agent/skills/SkillsScriptIntegrationTest.kt186 // Step 4: Activate to get instructionsCOMMENT
LOW…n/com/embabel/agent/e2e/LLMStreamingIntegrationTest.kt234 // Step 1: Test basic non-streaming model with established patternCOMMENT
LOW…/embabel/agent/spi/config/spring/AsyncConfiguration.kt84 // Step 3: Attempt to get shared executor if enabledCOMMENT
LOW…/embabel/agent/spi/config/spring/AsyncConfiguration.kt97 // Step 4: Create isolated raw JDK executor (no Spring lifecycle)COMMENT
LOW…rt/springai/streaming/StreamingChatClientOperations.kt381 // Step 1: Original raw chunk stream from LLMCOMMENT
LOW⚡…rt/springai/streaming/StreamingChatClientOperations.kt393 // Step 2: Transform raw chunks to complete newline-delimited linesCOMMENT
LOW⚡…rt/springai/streaming/StreamingChatClientOperations.kt398 // Step 3: Final flux of StreamingEvent (thinking + objects)COMMENT
LOW…nt/spi/support/streaming/StreamingLlmOperationsImpl.kt237 // Step 1: Raw chunk stream from LLMCOMMENT
LOW⚡…nt/spi/support/streaming/StreamingLlmOperationsImpl.kt248 // Step 2: Transform raw chunks to complete newline-delimited linesCOMMENT
LOW⚡…nt/spi/support/streaming/StreamingLlmOperationsImpl.kt253 // Step 3: Convert lines to StreamingEvent (thinking + objects)COMMENT
Self-Referential Comments1 hit · 4 pts
SeverityFileLineSnippetContext
MEDIUM⚡…oconfigure/src/main/resources/models/gemini-models.yml2# This file defines all Google Gemini models available for use in the application.COMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM…pi/event/observation/ToolLoopObservationContextTest.kt70 // robust to how many times Micrometer happens to read the convention.COMMENT
Hyper-Verbose Identifiers1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…/agent/a2a/server/support/AutonomyA2ARequestHandler.kt38class AutonomyA2ARequestHandler(CODE
Slop Phrases1 hit · 1 pts
SeverityFileLineSnippetContext
MEDIUM…/spi/support/springai/SuppressThinkingConverterTest.kt95 val input = "{\"name\": \"Rex\"}\n\nLet me know if you need anything else."STRING