diff --git a/.forgejo/workflows/baseline.yml b/.forgejo/workflows/baseline.yml index 96e193e..d7b4b66 100644 --- a/.forgejo/workflows/baseline.yml +++ b/.forgejo/workflows/baseline.yml @@ -131,13 +131,32 @@ jobs: mkdir -p /tmp/versions_held mv alembic/versions/*.py /tmp/versions_held/ 2>/dev/null || true DB_NAME=fc_gen alembic revision --autogenerate -m "baseline" || true - # Printed in full rather than uploaded. ci-requirements.md records - # that this runner cannot do actions/upload-artifact@v4+, and the - # repo dropped the action entirely in 2026-05; the job log is the - # retrieval channel that is actually proven here. - echo "===== BEGIN CANDIDATE BASELINE =====" - cat alembic/versions/*.py + # Printed rather than uploaded: ci-requirements.md records that this + # runner cannot do actions/upload-artifact@v4+, and the repo dropped + # the action entirely in 2026-05, so the job log is the retrieval + # channel actually proven here. + # + # base64, not the raw file. A plain `cat` of the ~33KB candidate was + # TRUNCATED MID-LINE by the runner on run 4964 — it stopped inside + # `sa.Column('mime', sa.String(length=128)` and carried straight on + # to the next traced command, with the step still green. A silent + # cut in the middle of a schema definition is the worst possible + # failure here, because the truncated text still looks like a + # plausible file. + # + # base64 at a fixed narrow width gives many short lines instead of + # few long ones, and — the actual point — a checksum and a line + # count that make truncation DETECTABLE rather than invisible. + set +x + F=$(ls alembic/versions/*.py | head -1) + B64=$(base64 -w 120 "$F") + echo "===== BEGIN CANDIDATE BASELINE (base64) =====" + echo "$B64" echo "===== END CANDIDATE BASELINE =====" + echo "candidate-sha256: $(sha256sum "$F" | cut -d' ' -f1)" + echo "candidate-bytes: $(wc -c < "$F")" + echo "candidate-b64-lines: $(echo "$B64" | wc -l)" + set -x # Put the tree back exactly as it was; this job never mutates state. rm -f alembic/versions/*.py mv /tmp/versions_held/*.py alembic/versions/ 2>/dev/null || true