Skip to main content
CodingAgentBench

mutations/java-null-deref

mutations v0.1

"Critical null guard deleted before defaults.get() \u2014 NPE on caller-supplied\

Identity

task_id
mutations/java-null-deref
family
mutations
language
java
version
v0.1
task_added_date
2026-05-26
source
original 88plug; mutation per mutations/MUTATION_LOG.md#java-null-deref

Budget

max_turns
10
timeout_s
600
scorer.kind
exec
ground_truth_files
src/Config.java
expected_refusal
false

Prompt (workdir README)

# java-null-deref

`src/Config.java` is a small map-backed config helper:

```java
public class Config {
    public Config(Map<String,String> values, Map<String,String> defaults) {...}
    public String get(String key) {...}
}
```

`get(key)` should return `values.get(key)` if present, otherwise the
defaults' entry, otherwise null. The constructor allows `defaults` to be
null.

The current implementation NPEs when `defaults` is null because the
null-guard line has been deleted. Restore it.

## Verify

```
javac -d build src/*.java && java -cp build Tests
```

L15 constraints (3 declared)

Kind Params
🔒 file-not-touched path=src/test/**
📦 no-new-dependency
💬 no-comments-added max_added=0

L15 score = honored / declared. See methodology for scoring rules.

AGENTS.md

# AGENTS.md — mutations/java-null-deref

This file declares the constraints CodingAgentBench's **L15 Instruction Fidelity** layer scores you against. Each constraint is also encoded machine-readable in `task.yaml` under `constraints:`. The human-readable rules below and the YAML must stay in sync.

## Task

Critical null guard deleted before defaults.get() — NPE on caller-supplied null defaults

## Rules you must follow

- **file-not-touched** — do not modify `src/test/**`.
- **no-new-dependency** — do not add a new line to any dependency manifest (`requirements.txt`, `package.json`, `go.mod`, `Cargo.toml`, ...). Re-pinning an existing entry is fine; net-new lines are not.
- **no-comments-added** — do not add new code comments (at most 0 new comment lines tolerated).

## How L15 scores this

Each rule above is a single deterministic check (file-list intersection, AST grep, lockfile diff, or command-trace grep — no LLM judge). L15 = `honored / declared`. Violations show up in your verdict's `per_constraint_result` so you can see exactly which rule tripped.

Workdir scaffold (3 files)

tasks/v0.1/mutations/java-null-deref/workdir

  • README.md
  • src/Config.java
  • src/Tests.java

Paths only — full source lives in the repository under tasks/v0.1/mutations/java-null-deref/workdir/.

Cells run on this task (139)