Skip to content

ci(fork): parallel keyless lanes behind one stable verdict check - #39

Merged
whitelonng merged 6 commits into
masterfrom
ci/fork-pr-ci
Aug 19, 2026
Merged

ci(fork): parallel keyless lanes behind one stable verdict check#39
whitelonng merged 6 commits into
masterfrom
ci/fork-pr-ci

Conversation

@whitelonng

Copy link
Copy Markdown
Owner

Rework fork-ci.yml from a single push-only 120-minute job into four parallel keyless lanes (static, unit, web diagnostic, coverage) plus an all-checks-passed aggregator required by branch protection. Pull requests now carry the fork's unit, static-and-docs, and coverage signal; caches have a single producer per family; coverage overlaps its two gates on the 4-vCPU hosted runner; knip and duplication stay out until the fork's pre-existing debt is fixed. A fork-owned spec pins the workflow contract; the Agent Note records the decision; the module graph regeneration is mechanical.

关联 Issue:

变更与验证
  • 变更:
  • 验证:

Rework fork-ci.yml from a single push-only 120-minute job into four
parallel keyless lanes (static, unit, web diagnostic, coverage) plus an
all-checks-passed aggregator required by branch protection. Pull requests
now carry the fork's unit, static-and-docs, and coverage signal; caches
have a single producer per family; coverage overlaps its two gates on the
4-vCPU hosted runner; knip and duplication stay out until the fork's
pre-existing debt is fixed. A fork-owned spec pins the workflow contract;
the Agent Note records the decision; the module graph regeneration is
mechanical.
steps.find(isRecord(x) && ...) returns any because the callback is a
boolean, not a type predicate; narrow with filter(isRecord) first, the
same pattern ci-workflow.spec.ts uses.
…t default

The retry row now reports attempt 1 of the fork's five transient retries
(default set in the llm-retry provider); the golden still expected 1/2.
The overlapping coverage gates starve the scenario host on the 4-vCPU
runner; the first Ubuntu coverage run hit the 30s ready wait. The
scenario and its owning test timeouts now read DSH_COVERAGE_TEST_TIMEOUT_MS
(run-gates' existing instrumented-lane knob), and the coverage lane sets
it to 60s.
The host probed tree.json with access() and read once, so a partial
write crashed it before it published ready; the coverage lane hit this
repeatedly on the 4-vCPU runner. Retry the read+parse, and surface the
host's exit/stderr when ready never appears.
…sion block

The newly enabled coverage lane exposed 24 fork files below the per-file
100% gate (fork-added packages without tests to the bar, fork-diverged
files without carried coverage, and one upstream-identical straggler).
Exclude them with a TODO(fork) marker so the lane enforces 100% on
everything else; cover and remove entries as tests land.
@whitelonng
whitelonng merged commit 08ee5a5 into master Aug 19, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant