Skip to content

feat(index): project review_status into the search index (engine#94) … #32

feat(index): project review_status into the search index (engine#94) …

feat(index): project review_status into the search index (engine#94) … #32

Workflow file for this run

# Schema-mirror drift gate — pinned to a learn-content-engine release.
#
# The JSON-Schema artefacts under schema/ are a mirror of
# learn-content-engine schema/ at the version pinned in
# schema/engine-version.txt (source-of-truth chain: engine (canonical)
# -> this mirror). This job downloads the npm tarball
# of the PINNED engine release and compares it byte-for-byte against the
# committed mirror. The npm tarball is used (not a git tag) because a
# published npm version is immutable, it is exactly the artefact
# validator consumers install, and it needs no GitHub token. Moving to a
# new engine version is a deliberate PR that bumps the pin file and
# refreshes the mirror together — no floating branch is ever compared.
name: Schema mirror drift
on:
pull_request:
paths:
- "schema/**"
- "scripts/check_schema_drift.py"
- ".github/workflows/schema-drift.yml"
push:
branches: [main]
# Manual trigger + a daily heartbeat: with an immutable pin the compare
# is deterministic, so the cron mainly proves the pinned tarball stays
# fetchable and that no hand-edit landed on main.
workflow_dispatch:
schedule:
- cron: "0 6 * * *"
# Coerce Node-runtime actions onto Node 24 as a safety net for any
# action still defaulting to the deprecated Node 20 runtime.
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
jobs:
drift:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Check schema mirror against the pinned engine release
run: python scripts/check_schema_drift.py