diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 589c0bb..2affde2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -112,7 +112,7 @@ jobs: - {suite: browser-integration, shard: 2, shards: 3} - {suite: browser-integration, shard: 3, shards: 3} runs-on: ubuntu-latest - timeout-minutes: 15 + timeout-minutes: ${{ matrix.suite == 'browser-conformance' && 20 || 15 }} env: UV_PYTHON: '3.14.7' steps: diff --git a/docs/interpreter-exceptions.md b/docs/interpreter-exceptions.md index 61b5aff..b8246a7 100644 --- a/docs/interpreter-exceptions.md +++ b/docs/interpreter-exceptions.md @@ -566,3 +566,11 @@ count divided by ten, matching the shared validation inventory's cost basis. Small selections retain the existing bound; semantic execution, work/allocation limits and timeout/failure diagnostics are unchanged. This addresses the two fixed-deadline Linux CI failures in the first batch's stepped/parked matrix. + +LA-58B retains the complete browser matrix with a finite 20-minute conformance +job bound; integration jobs keep their 15-minute limit. Two 15-minute CI +attempts reached the final compatibility check after their preceding checks +passed. The identical complete 44-check shard passes locally in 485.824 seconds. +All six conformance and three integration shards, reports and semantic/resource +limits are retained; the deterministic partition test uses the actual six +conformance shards. Interpreter/package/offline acceptance evidence is reused. diff --git a/tests/test_test_runner.py b/tests/test_test_runner.py index a0f964b..29a8307 100644 --- a/tests/test_test_runner.py +++ b/tests/test_test_runner.py @@ -18,7 +18,7 @@ def test_focused_selection_contains_only_matching_node_checks(self): self.assertEqual({check.suite for check in selected}, {'node-unit', 'node-conformance'}) def test_shards_are_complete_disjoint_balanced_and_deterministic(self): - for suite, count in [('interpreter', 4), ('browser-conformance', 4), ('browser-integration', 3)]: + for suite, count in [('interpreter', 4), ('browser-conformance', 6), ('browser-integration', 3)]: with self.subTest(suite=suite): selected = run_tests.select_checks([suite]) groups = run_tests.shards(selected, count)