4d40b30c

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Cut the file in the checker, and only a file it has read

The splitting was `head` and `tail` in a shell, working from a line number the
checker would hand out for the asking. Two things wrong with that.

`--redeployable-line` did not check anything. It computed the boundary and
said nothing about the file, so a caller could cut a configuration nobody had
ever read and deploy the halves. That the one caller happened to pass a checked
file was a convention in another repository, not something this one enforced.

And rejoining a file is not the same as never having taken it apart. `head` and
`tail` happen to be exact here; the shell around them was where a trailing
newline would go missing, which is why it needed a `cmp` afterwards to say so.

So `--split-into DIR SCRIPT HOSTS_JSON` replaces it: every check first, the
halves only out the other side of that, cut on the text at the offset after the
right newline rather than on a list of lines, and asserted to concatenate back
into what they came from. The only way to get halves is a run that also
checked, so a deployment built on halves is a deployment of a file that has
been read.

The boundary itself says nothing about why it is missing, because a file with
no way back in is already one of the things checked for, and reporting it twice
reported it twice: eight problems for a file with four.

Total

11s

Created Started Finished

Time to Start Worker time Duration Time to finish Idle
Config 0s 1s 1s 1s 0s
Eval 1s 6s 6s 7s 0s
Build 7s 7s 4s 11s 0s
Suite 0s 15s 11s 11s 0s

Timeline

Config Eval Build
0s10s