Fix generate manifest validation and pin raw artifact download action (#324)

* Initial plan * Fix generate job by downloading raw-data artifact * Pin generate raw artifact download action --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

Copilot committed Jun 8, 2026 at 14:34 UTC 80be6b4ac96f2fbb1ed5035e8a92ea42803872b3
2 files changed +19
.github/workflows/crawl-and-publish.yml
+6
@@ -854,6 +854,12 @@ jobs:
854 name: analysis-candidate
855 path: data/candidates/
856
857 + - name: Download raw crawl artifact
858 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
859 + with:
860 + name: raw-data
861 + path: data/raw/
862 +
863 - name: Set up Python
864 uses: actions/setup-python@v5
865 with:
tests/test_pipeline.py
+13
@@ -457,6 +457,19 @@ class WorkflowConfigTests(unittest.TestCase):
457 self.assertEqual(upload_candidate["if"], "always()")
458
459 generate = workflow["jobs"]["generate"]
460 + generate_raw_download = next(
461 + (
462 + s
463 + for s in generate["steps"]
464 + if s.get("name") == "Download raw crawl artifact"
465 + and s.get("uses") == "actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093"
466 + and s.get("with", {}).get("name") == "raw-data"
467 + and s.get("with", {}).get("path") == "data/raw/"
468 + ),
469 + None,
470 + )
471 + self.assertIsNotNone(generate_raw_download)
472 +
473 generate_step = next((s for s in generate["steps"] if s.get("name") == "Generate weekly content"), None)
474 self.assertIsNotNone(generate_step)
475 self.assertIn('assert-eligible --manifest "$MANIFEST_FILE"', generate_step["run"])