Skip to content

feat(dist): une cible neutre ouvre le greffon a une quarantaine d hotes #157

feat(dist): une cible neutre ouvre le greffon a une quarantaine d hotes

feat(dist): une cible neutre ouvre le greffon a une quarantaine d hotes #157

Workflow file for this run

name: validate
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
concurrency:
group: validate-${{ github.ref }}
cancel-in-progress: true
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "20"
- name: Build reference index
run: node null-to-hero/tools/build-index.mjs
- name: Every rule is complete across its four sources
if: always()
run: node null-to-hero/tools/rule.mjs --audit
- name: Prose counts match the CSVs
if: always()
run: node null-to-hero/tools/sync-counts.mjs --check
- name: Run reference validator
if: always()
run: node tests/validate.js
- name: Run Node unit tests
if: always()
run: node tests/unit.mjs
- name: Detector rules (fixtures both directions)
run: node tests/inspect-rules.mjs
- name: Corpus divergence harness (registry and recorded results)
run: node null-to-hero/tools/eval-corpus/run.mjs
- name: Parsers for the generated packages
if: always()
run: python3 -m pip install --quiet pyyaml
- name: Portable packages are in sync and valid (Codex, Kimi Code)
if: always()
run: node tests/portability.mjs
# P10. The thirteen browser rules are what the product sells and nothing in
# CI verified them: rendered-rules.mjs exits 0 when Playwright is absent, and
# the workflow did not run the file at all. Not a failure, a construction.
# The recipe was already written in action.yml:61-64 and never ported here.
#
# Delivery condition, from the plan: a flaky gate gets bypassed, and a
# bypassed gate stops protecting against real reds. This job stays
# non-blocking (continue-on-error) until it has run twenty consecutive times
# green on the same revision. Flip continue-on-error to false then, and not
# before. Remove this comment in the same commit.
- name: Install Playwright Chromium
if: always()
run: npx --yes playwright install --with-deps chromium
- name: Browser-verified rules (rendered, three.js, motion probes)
if: always()
continue-on-error: true
run: node tests/rendered-rules.mjs --require-browser
- name: Architecture review numbers hold
if: always()
continue-on-error: true
run: node null-to-hero/tools/check-review-numbers.mjs
- name: Run Python unit tests
if: always()
run: python3 tests/test_design_system.py
- name: Context budget guard
if: always()
run: node null-to-hero/tools/check-context-budget.mjs
- name: Routing guard
if: always()
run: node null-to-hero/tools/check-routing.mjs
- name: Behavior corpus is well formed
if: always()
run: node tests/behavior/run.mjs
- name: Content scrubber self-test
if: always()
run: node null-to-hero/skills/seo/scripts/scrub.mjs --selftest