#11 Workflow YAML parser: no block-scalar (run: |) support
closedsrc/yaml.lisp doesn't support YAML block scalars (run: | / >). A run: | step is parsed with the literal value "|", and the indented script lines are mis-handled — so the step executes bash -c '|' → syntax error near unexpected token '|'.
Impact:
.cave/workflows/release.ymlhas always failed — every step usesrun: |. The "Skip unless HEAD is on a v* tag" step dies immediately, so Release never skips cleanly (it fails). This is why speculative dependency-fix builds (which include Release) never go green, and why the CI backlog was full of failed Release runs.- Any multi-line CI step is unusable; workflows are forced into single-line
run:with&&.
Also: yaml-lines strips # comments and drops blank lines globally, before parsing — which would corrupt block-scalar content (comments/blanks inside a script) even once | is recognized.
Fix: handle key: | (and >) during line consumption — take the following more-indented lines verbatim (no comment-strip, no blank-drop) as the scalar value, dedented by the block's indent.
Fixed in af43d7e — yaml.lisp now parses
key: |/key: >block scalars (literal and folded, with -/+ chomping), taking the more-indented body verbatim so shell#comments inside arun: |survive. Deployed and verified: multi-linerun:steps execute correctly, and release.yml was switched toon: [tag]so it no longer fails on every push.