Objective
Prevent deterministic shared-artifact drift from reaching main or leaving the Cloudflare Pages deployment red. Pipeline verification and the scheduled Beads worker must detect drift before push or PR creation, relevant source-only changes must trigger Pages validation, and the required offline rebuild command must be documented.
Approach
Added the canonical shared-artifact check to the offline pipeline verifier and made the verification prompt require a revisit rather than a pass when drift exists. Added the same fail-closed command to the worker's awaiting_shipping boundary before staging, pushing, or opening a PR. Expanded the Pages workflow paths to cover artifact sources and catalog-canary inputs, documented the rebuild command, and regenerated every task-owned public artifact through its producer.
Files changed
research/pipeline/verify.py,research/pipeline/prompts.json— enforce and explain the offline shared-artifact gate.research/scripts/run-beads-worker.sh— block shipping before push/PR creation when drift exists..github/workflows/cloudflare-pages.yml— trigger Pages for artifact-source and catalog-canary tree changes..omp/AGENTS.md— document the deterministic rebuild command.tests/test_research_pipeline.py,tests/test_beads_sync.py,tests/test_reports_scaffold.py— cover drift rejection, no-push behavior, ordering, prompt requirements, and workflow paths.docs/.shared-artifact-manifest.json,docs/research/catalog-canary/payloads/sixty-forty.json,docs/site-data/pipeline.json— producer-rebuilt public artifacts.
Validation
python3 -m research.artifacts check --mode full --offline— passed before and after broader verification.python3 -m research.pipeline verify --offline— passed with explicit shared-artifact coverage and all 28 nodes exercised.python3 -m research.pipeline validate— passed for the 28-node, 38-edge graph.- Focused artifact, pipeline, worker, visualization, and Pages workflow tests — 28 passed.
python3 research/scripts/check_static_reports.py docs— local bundle passed for 1,235 files and 182 canary routes.git diff --check, prompt JSON parsing, and worker shell syntax — passed.
Results
Shared-artifact drift can no longer silently pass the pipeline or the scheduled worker's shipping boundary. Source-only changes under the artifact and catalog-canary trees now start the Pages workflow, stale output errors name the canonical offline rebuild command, and the checked-in shared bundle and pipeline visualization are current. No credentials, private data, or database mutations were involved.