---
title: "MGS3038: a job goal no evidence could grade"
description: Fires when a job record declares a goal that could never be met or graded, such as one naming nothing to examine, a duplicate id, a dependency cycle or two signatures for one symbol. The record is refused; fix each goal the problem names.
tags: [MGS3038, jobs, leases, goals, fork, apply, agents, validation]
---

# MGS3038: a job goal no evidence could grade

`magus job fork`, `magus job apply` and `magus\job.put` refused a job record
because one of its goals could never be graded:

```text
[MGS3038] goal "names" expects the signature of 2 symbols, and a signature is one
  declaration: name one symbol per goal
```

Nothing was written to the job store. Every goal problem is reported at once,
each naming its field (`goals[1].symbols`, `goals[2].depends_on[0]`).

## What fires it

- A goal id that is not an id, or two goals sharing one.
- A kind outside `check`, `paths` and `symbol`, or an `expect` its kind does
  not accept.
- A goal carrying a subject its kind does not read, such as paths on a symbol
  goal, or naming nothing to examine at all.
- A `signature` on a goal that does not expect one, a signature goal naming
  other than one symbol, or two signature goals on one symbol.
- A `depends_on` entry naming no goal of the record, naming the goal itself, or
  closing a cycle.
- A symbol the knowledge graph resolves to more than one declaration.

## Why

A goal is what `magus job wait` grades the job by. A goal no evidence could
meet holds the job open forever, and one that names two subjects is graded on
whichever its kind happens to read.

## What to do

Edit each goal the problem names, using the fix it prints. For an ambiguous
symbol, name it by the id `magus refs <symbol>` prints.

## See also

- [Leases](../../../guides/integrations/agents/leases.md): goals and how a job is graded.
- [MGS3037](MGS3037.md): a record field that fails its shape.
