AI Slop Code RIsk Monitor

embabel/embabel-agent

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

4.8 Low pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for embabel/embabel-agent, a Kotlin project with 4,502 GitHub stars. SynthScan examined 368,581 lines of code across 2116 source files, recording 441 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 4.8 (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.8
Adjusted Signal
4.8
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
4.5K
Stars
Kotlin
Language
368.6K
Lines of Code
2.1K
Files
441
Pattern Hits
2026-10-12
Scan Date
0.06
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 1.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 14.3/100 · LOW

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

Agent Over-Engineering Ratio 6.5/100 · LOW

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

PR Review Velocity Impact 20.1/100 · LOW

Which changes need focused human review? 441 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 90HIGH 28MEDIUM 132LOW 191

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 441 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 Indicators90 hits · 970 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…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.kt697 override val definition = com.embabel.agent.api.tool.Tool.Definition(CODE
CRITICAL⚡…t/spi/support/springai/SpringAiLlmMessageSenderTest.kt700 inputSchema = com.embabel.agent.api.tool.Tool.InputSchema.empty(),CODE
30 more matches not shown…
Decorative Section Separators113 hits · 373 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.yml29 # ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml31 # ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml44 # ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml46 # ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml67 # ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml69 # ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml89 # ========================================COMMENT
MEDIUM…nfigure/src/main/resources/models/anthropic-models.yml91 # ========================================COMMENT
MEDIUM⚡…nfigure/src/main/resources/models/anthropic-models.yml111 # ========================================COMMENT
MEDIUM⚡…nfigure/src/main/resources/models/anthropic-models.yml113 # ========================================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.yml352 # ========================================COMMENT
MEDIUM⚡…oconfigure/src/main/resources/models/openai-models.yml354 # ========================================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.yml41 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml59 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml109 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml112 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml145 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml149 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml212# ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml217# ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml233 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml235 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml268 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml270 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml287 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml289 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml389 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml391 # ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml411# ========================================COMMENT
MEDIUM…oconfigure/src/main/resources/models/openai-models.yml413# ========================================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.yml24 # ========================================COMMENT
MEDIUM…gure/src/main/resources/models/google-genai-models.yml26 # ========================================COMMENT
MEDIUM…gure/src/main/resources/models/google-genai-models.yml39 # ========================================COMMENT
MEDIUM…gure/src/main/resources/models/google-genai-models.yml41 # ========================================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.yml124# ========================================COMMENT
MEDIUM⚡…gure/src/main/resources/models/google-genai-models.yml126# ========================================COMMENT
53 more matches not shown…
Fake / Example Data133 hits · 137 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…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…/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
LOW…babel/agent/spi/support/ChatClientLlmOperationsTest.kt1108 "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et CODE
LOW…babel/agent/spi/support/ChatClientLlmOperationsTest.kt1145 "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et CODE
73 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-Vocabulary16 hits · 52 pts
SeverityFileLineSnippetContext
MEDIUM⚡…nfigure/src/main/resources/models/anthropic-models.yml102 # Claude Sonnet 4 - General purpose, large context windowCOMMENT
MEDIUM⚡…oconfigure/src/main/resources/models/openai-models.yml353 # GPT-4.1 FAMILY (April 2025 - 1M token context window)COMMENT
MEDIUM⚡…gure/src/main/resources/models/google-genai-models.yml129 # Gemini Embedding 001 - Recommended 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
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
Over-Commented Block31 hits · 28 pts
SeverityFileLineSnippetContext
LOW…nfigure/src/main/resources/models/anthropic-models.yml1# ============================================COMMENT
LOW…oconfigure/src/main/resources/models/openai-models.yml1# ============================================COMMENT
LOW…oconfigure/src/main/resources/models/openai-models.yml41 # ========================================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…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.kt201 // Spring AI 2.0 GA: toolCallbacks are read-only on ToolCallingChatOptions, so useCOMMENT
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
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