Skip to content

ci: map ci.yaml edits to the jobs they sit in (spec 023 PR 4) - #785

Merged
ValgulNecron merged 13 commits into
claude/project-thread-63yei6-pr3from
claude/project-thread-63yei6-pr4
Oct 22, 2026
Merged

ValgulNecron merged 13 commits into
claude/project-thread-63yei6-pr3from
claude/project-thread-63yei6-pr4

Conversation

@ValgulNecron

Copy link
Copy Markdown
Collaborator

Stacked on #779 (spec 023 PR 3). Review only this PR's own commits. Its base moves to master once #778 and #779 merge.

Summary

Spec 023 US3 (tasks T042–T046, OD-3): an edit to .github/workflows/ci.yaml or .golangci.yml no longer forces the whole suite. It runs only the jobs it feeds, plus workflow validation.

  • hack/ci_scope.py mode jobs:
    • ci_blocks parses the job blocks under jobs: and their needs (inline, list or flow form).
    • changed_ci_lines maps git diff -U0 hunks to old and new line numbers.
    • ci_jobs returns the edited jobs plus their needs closure, minus changes and report. An edit outside any job (triggers, env, concurrency, …) forces the full suite.
  • Edited-job widening: an edit inside lint, go, web, the e2e-go* jobs or e2e-game-bot widens that job's own selection (widen_e2e and widen_units), because those jobs read selection outputs and an if: alone is not enough.
  • ci.yaml:
    • New jobs step and ci-jobs output.
    • 30 job if: lines are ORed with contains(fromJSON(needs.changes.outputs.ci-jobs || '[]'), '<job>').
    • The summary rows show "edited in this PR".
  • Force-all and shared sets:
    • FORCE_ALL_FILES drops ci.yaml and .golangci.yml and adds test/e2e/suite-components.json.
    • .golangci.yml now runs only the lint legs (NO_E2E_FILES).
    • The .github/ prefix becomes .github/actions/.
    • The paths-filter ci list is updated to match.
  • Tests:
    • New classes CiJobsTests, CiJobsModuleTests, WidenTests and EditedJobSummaryTests.
    • One existing assertion changed, with valgul's sign-off (2026-10-22): test_shared_inputs_and_dependency_changes_select_every_module no longer lists .golangci.yml and .github/workflows/ci.yaml, since OD-3 maps them to their jobs.

Checks

  • Only compile checks ran locally (ast parse and a YAML parse), per rule 8.
  • CI is full scope here, because the selection rules themselves changed.
  • The quickstart scenarios 9–11 draft runs (T047) follow once this PR is green.

Generated by Claude Code

Mode jobs maps changed ci.yaml lines to their job (plus the jobs it needs) and .golangci.yml to the lint legs; edits outside any job or in changes/report still force full scope. Each job gate is ORed with the edited-job list and modes modules, units and e2e widen that job's own selection (spec 023 US3, OD-3).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
Adds a How CI picks tests section to docs/contributing.md and a task map row in docs/agent-architecture.md (spec 023 T048, T049).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
…hread-63yei6-pr4

Signed-off-by: Claude <noreply@anthropic.com>
…hread-63yei6-pr5

Signed-off-by: Claude <noreply@anthropic.com>
…aths

OD-3: those files now map to the jobs they feed (mode jobs) instead of forcing
every module. valgul signed off on this assertion change (2026-10-22).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
…hread-63yei6-pr4

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
…hread-63yei6-pr5

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ValgulNecron ValgulNecron added type: ci CI, workflows, or build tooling area: shared netguard, gameaction, gameproto, svcutil and other shared packages labels Oct 22, 2026 — with Claude
@ValgulNecron ValgulNecron self-assigned this Oct 22, 2026
…hread-63yei6-pr4

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
ci_blocks read the YAML list marker `-` as a job id when `needs:` was a
list, so the job map gained a job named `-`. A job id now has to start
with a letter, digit or underscore.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
…hread-63yei6-pr5

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

CI Report - 0f8d732

run 39825896695 - attempt 1

0 failed - 33 passed - 0 skipped - 91m30s elapsed

Test selection: full (selection-rule change) - per-suite table

Coverage

Module Measured Gate Margin
web L95.87 S94.37 B89.27 F91.79 L92 S92 B82 F76 +2.37

Changed

Area Files +/-
specs/ 4 +823/-9
hack/ 2 +375/-20
.github/ 1 +46/-39
docs/ 2 +40/-0

Slowest jobs

Job Duration
e2e telemetry / amd64 (kind) 23m22s
e2e telemetry / arm64 (kind) 22m37s
e2e capture overhead (kind) 12m56s
e2e web live / arm64 (kind) 11m4s
build e2e images 10m52s

e2e buckets run

api-agent, api-auth, api-mods, api-rbac, api-roles, bot-fast, multicluster, operator, optional-components, ratelimit, telemetry, upgrade

…ei6-pr5

docs: explain how CI picks tests (spec 023 PR 5)
@ValgulNecron
ValgulNecron merged commit 4b90043 into claude/project-thread-63yei6-pr3 Oct 22, 2026
3 checks passed
ValgulNecron pushed a commit that referenced this pull request Oct 22, 2026
Each TestCISelection_* test commits a whole checkout, which leaves enough
loose objects to start git's background gc and maintenance. On arm64 they
were still writing into .git when t.TempDir removed it, so the tests
failed at cleanup with "directory not empty" after every assertion had
passed (#748, #775; #785 hit the same in the coverage fixture). The git
helpers in the e2e test and both Python test files now pass
gc.auto=0 and maintenance.auto=false. Approved by valgul 2026-10-22.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: shared netguard, gameaction, gameproto, svcutil and other shared packages type: ci CI, workflows, or build tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants