mirror of
https://github.com/razzant/ouroboros.git
synced 2026-10-03 04:07:04 +00:00
New ouroboros/preflight_node.py: run_hermetic_pytest executes the browser-module suite (node --test web/tests/*.test.js, run from the candidate's web/) as the first consumer of the shared preflight budget, once the candidate worktree is assembled and before the two pytest passes. Content-keyed activation: candidates without web/tests/*.test.js never require node (existing synthetic preflight fixtures stay green). While active: bundled signed node resolves first, PATH second; missing/unusable node is the typed PREFLIGHT_NODE_MISSING hard block (remediation names scripts/download_node_standalone.sh), a runtime below the 20.11 floor is PREFLIGHT_NODE_TOO_OLD, and a red suite is PRE_PUSH_TEST_ERROR: NODE_TESTS_FAILED with bounded output — never a silent skip. Same ProcessContainer spawn/reap/containment pattern as the pytest passes. ci.yml (protected file; owner-approved for this sprint per the working-pill metafix plan, decision 6 / G-5): quick-test gains the node --test step after ruff (node 22 already provisioned); full-test gains SHA-pinned actions/setup-node (node 22) plus the same step with shell: bash for the Windows glob; both jobs set OUROBOROS_PREFLIGHT_REQUIRE_NODE=1 so the lane's real-spawn tests fail loudly instead of skipping when node provisioning regresses. tests/test_preflight_node.py pins activation, the typed blocks, real-spawn red/green runs, candidate-tree globbing through run_hermetic_pytest, ordering before the pytest passes, and CI parity derived from the lane's own glob constants. docs: DEVELOPMENT.md commit-gate section and ARCHITECTURE.md module map + CI section updated. No version bumps. Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| actions/setup-python-env | ||
| ISSUE_TEMPLATE | ||
| workflows | ||
| PULL_REQUEST_TEMPLATE.md | ||