Skip to content

chore: sync main into testnet-canary after CI parity (#1992) - #1993

Merged
Jurij89 merged 3 commits into
testnet-canaryfrom
main
Jul 29, 2026
Merged

chore: sync main into testnet-canary after CI parity (#1992)#1993
Jurij89 merged 3 commits into
testnet-canaryfrom
main

Conversation

@Jurij89

@Jurij89 Jurij89 commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Important

Merge this with a merge commit — do not squash.
Squash-merging the previous sync (#1986) is what silently diverged the two
branches: it collapsed the merge into a single-parent commit, so the content
matched byte-for-byte while the ancestry did not. That had to be repaired by
hand in eb1cc7946. A real merge commit keeps the histories joined.

Summary

  • Syncs main into testnet-canary after ci: run the full gates on testnet-canary PRs #1992 merged, so canary carries the CI trigger parity it was created to receive.
  • The only delta is ci: run the full gates on testnet-canary PRs #1992's workflow/CODEOWNERS change — canary carries no content outside .github/ that main lacks, so this sync has no behavioural surface beyond CI triggering.
  • After this lands, canary PRs stop silently skipping the main test suite. Today a canary-targeted PR dispatches only the RFC-64 Windows gate and the SPARQL lint; the vitest shards, EVM integration, Knip, and the supply-chain scan never fire, because canary's own ci.yml is the file GitHub consults and it does not list testnet-canary in on.pull_request.branches.

Divergence state going in

main b67656772
testnet-canary eb1cc7946
canary behind main 3 commits (#1992 and its two commits)
canary ahead of main 2 commits — aab9ec94d (squash artifact) + eb1cc7946 (the repair merge)
content canary has that main lacks none

Related

  • Follows ci: run the full gates on testnet-canary PRs #1992 (ci: run the full gates on testnet-canary PRs) — this PR is what actually delivers that config to canary.
  • Repairs the pattern from chore: sync main into testnet-canary after 10.0.10 #1986, whose squash-merge caused the ancestry split fixed in eb1cc7946.
  • Blocks the follow-up protect-testnet-canary ruleset: it requires the CI gate and EVM integration gate checks, which cannot dispatch on canary PRs until this merges. Creating that ruleset first would leave every canary PR blocked on checks that never arrive.

Diagrams

Which workflows dispatch on a testnet-canary PR

Before (canary's ci.yml omits testnet-canary, so the trigger filter rejects it):

sequenceDiagram
    participant Dev
    participant GitHub
    participant Workflows
    Dev->>GitHub: open PR, base=testnet-canary
    GitHub->>GitHub: read ci.yml from merge commit
    Note over GitHub: on.pull_request.branches =<br/>[main, v10-rc, release/rc.12, rc17-vm-wip]<br/>base not in list
    GitHub--xWorkflows: CI, EVM, Knip, supply-chain NOT dispatched
    GitHub->>Workflows: RFC-64 Windows gate, SPARQL lint (unfiltered)
    Workflows-->>Dev: 2 checks — looks green, suite never ran
Loading

After (canary inherits the widened filter):

sequenceDiagram
    participant Dev
    participant GitHub
    participant Workflows
    Dev->>GitHub: open PR, base=testnet-canary
    GitHub->>GitHub: read ci.yml from merge commit
    Note over GitHub: on.pull_request.branches =<br/>[main, testnet-canary, release/rc.12, rc17-vm-wip]<br/>base matches
    GitHub->>Workflows: CI (4 vitest shards), EVM integration, Knip, supply-chain
    GitHub->>Workflows: RFC-64 Windows gate, SPARQL lint
    Workflows-->>Dev: full gate set — green means tested
Loading

Files changed

File What
.github/workflows/ci.yml v10-rctestnet-canary in the push/PR trigger lists; turbo cache restore-key repointed from the deleted refs/heads/v10-rc- to refs/heads/main-; two branch-policy comments made generic
.github/workflows/evm-integration.yml Same trigger-list rotation
.github/workflows/knip.yml Same trigger-list rotation
.github/workflows/supply-chain-scan.yml Same trigger-list rotation
.github/CODEOWNERS Header comment now names testnet-canary as a protected branch instead of the deleted v10-rc

Test plan

  • git diff origin/main origin/testnet-canary -- . ':(exclude).github' is empty — canary carries no unique content, so this sync cannot revert work.
  • All four workflows parse, with the intended filters: ci/evm-integration/supply-chain-scan[main, testnet-canary, release/rc.12, rc17-vm-wip], knip[main, testnet-canary, rc17-vm-wip].
  • grep -rn v10-rc .github/ on main returns nothing.
  • Merge with a merge commit. Afterwards verify git rev-list --count origin/testnet-canary..origin/main is 0 and the tree hashes match.
  • Push an empty commit to an open canary PR (or reopen one) and confirm CI, EVM Integration Tests, Knip, and Supply chain scan now dispatch with base=testnet-canary. Read the run's created_at against the PR timeline rather than trusting the API's pull_requests[0].base.ref, which reports the current base and mislabels runs on retargeted PRs.
  • Only then create the protect-testnet-canary ruleset mirroring protect-main (id 14325863).

Jurij89 and others added 3 commits July 29, 2026 13:59
testnet-canary was never in the branch filters — not removed, simply never
added: the filters were last touched on 2026-04-03 to add v10-rc, and the
canary branch postdates that. The effect is that PRs targeting testnet-canary
run only SPARQL-lint and the path-filtered gates; the vitest lanes, EVM
integration, knip and the supply-chain scan all skip. A change can land on
canary with no unit signal at all.

Adds testnet-canary to ci.yml, evm-integration.yml, knip.yml and
supply-chain-scan.yml so canary PRs get the same gates as main.

Also drops v10-rc, which was deleted upstream and no longer resolves, and
repoints a turbo restore-key that referenced it at main so the cache fallback
can actually hit. Two v10-rc mentions remain in explanatory comments and are
left as historical context.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The trigger allowlists moved off the deleted `v10-rc` branch, but three
comments still named it: two `push (main / v10-rc / …)` shorthands in
ci.yml and the CODEOWNERS header describing which branches need
"Require review from Code Owners".

The ci.yml comments describe trigger *shape* (push vs PR vs merge_group),
not a canonical branch list, so they now say `push (trigger branches)` —
generic, so the next branch rotation cannot desync them again. CODEOWNERS
names the branches we actually protect, so it gets `testnet-canary`.

Comment-only; the parsed trigger config is unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ci: run the full gates on testnet-canary PRs

@otReviewAgent otReviewAgent left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Agent completed this review and found no issues.

@Jurij89
Jurij89 merged commit 736d6c2 into testnet-canary Jul 29, 2026
168 of 170 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.

2 participants