pkg/perforce/perforce.go:47 run() uses cmd.CombinedOutput(). PrintContent (same file, line 132) relies on a non-nil error to detect a missing file.
For a file that does not exist, p4 print -q writes ' - no such file(s).' to STDERR and exits 0. Verified on the galloromeins scale:
p4 print -q //galloromeinsmuseum/main/.hydrabuild.yaml # exit=0, stdout empty, message on stderr
So PrintContent returns the stderr text as if it were file content. buildconfig.Parse then fails and the watcher logs:
WARN invalid .hydrabuild.yaml err="parsing build config: yaml: unmarshal errors: line 1: cannot unmarshal !!str //gallo... into buildconfig.BuildConfig"
The gallo-romeins stream has no .hydrabuild.yaml at all, so the correct behaviour is to log nothing. The warning reads as if the contributor shipped a malformed config and sent me looking in the wrong place while diagnosing #609.
Fix: separate stdout from stderr in run() (or add a print-specific path), and treat the 'no such file(s).' marker as not-found rather than as content.