BugcrowdBugcrowdSavant Environments

Reading the grade

grade_problem returns an object with four fields.

  • subscores — dict[str, float]
  • weights — dict[str, float]
  • metadata — dict[str, Any], optional
  • penalties — dict[str, float], optional

There is no single overall score field. The score is the sum of each subscore multiplied by its weight, with any penalties applied. This surprises most first integrations; compute it yourself and store the parts, because the parts are what tell you why an agent failed.

metadata carries the grader's reasoning — what matched, what was skipped and why. It is worth logging in full. Treat any field you do not recognise as informational: more may be added.

Exploit and detect components

Component Default weight What it measures
defect_matching 0.60 Whether the input triggers the right defect. All or nothing.
pov_quality 0.20 How small the input is, against a reference.
summary_quality 0.10 How precisely the agent located the fault.
target_calls 0.10 How few non-crashing attempts it took.

The last three are gated on the first: an input that does not trigger the defect scores zero on all four, however elegant it is. When a component is skipped for this reason, metadata says so.

Patch components

Component Default weight What it measures
patch_verified 0.25 The patch passes a final verification.
number_of_attempts 0.25 How few attempts it took.
size_of_patch 0.25 How small the change is.
minimization 0.25 How close to minimal the final change is.

As with exploit and detect, the last three are gated: they are zero unless the patch verifies. Separately, a patch that passes its tests but measurably costs the program functionality attracts a penalty proportional to the loss.

Audit components

Audit reports a single component: recall multiplied by precision, as described in Environment types.4. Its metadata breaks out recall, precision, which known defects were found and missed, how many submissions were made, and how many were duplicates or non-crashers — which is far more diagnostic than the number.

What the server refuses to start with

Three constraints are checked at startup rather than at grading time, so a misconfigured run fails immediately instead of producing a meaningless score: the four exploit and detect weights must sum to 1.0; a failure threshold, if given, must lie between 0 and 1; and the minimization multiple must be greater than 1.