MGS3031: a declaration claim nothing can grade
magus job fork, the magus_job tool and magus\job.put refused a job because
one of its write paths claims a declaration (<file>#<declaration>) that no
footprint could ever check:
[MGS3031] job: wave/notes claims a declaration no footprint can grade:
"notes.txt" has no diff driver, so no changed line of it can be placed in a
declaration; give `*.txt` one in .gitattributes (`magus doctor` lists the
managed ones). Claim the whole file instead, or fix what is named
Nothing was written to the job store.
Why
A claim like run.go#executeStages lets two jobs start on one file. It holds
only because magus can say, from the job's diff, which declaration every changed
line lands in. That placement is git's: the file's diff driver (the diff=
attribute) names the declaration each line sits under. A claim on a file with no
driver, on a pattern, or in a checkout whose version control places no lines
would read as a boundary and check nothing, so it is refused rather than recorded.
What is refused
- An empty declaration:
run.go#. - A pattern:
internal/*.go#Run. A declaration lives in one file. - A file with no diff driver: magus manages drivers for Go, Python, Rust,
Markdown, TypeScript and Buzz in its
.gitattributesblock. Any other extension needs a*.<ext> diff=<driver>line of your own. - A checkout with no version control, or one that does not place changed lines. Only git does today.
- A path that contains
#, spelled bare:notes/a#b.mdwhen that file exists reads both as the path and as a claim onnotes/a. Spell the path./notes/a#b.mdornotes/a\#b.md; the escaped form also takes a claim,notes/a\#b.md#Intro.
What to do
Claim the whole file, which is what the job was going to be graded against anyway:
magus job fork wave/notes --write-paths notes.txt
Or give the extension a driver, then fork again with the claim.