Skip to content

Commit 322338e

Browse files
committed
🌱 sync: forward-merge v5 into v6 for #10590
Apply decision C: keep the Spek recheck config/types/endpoints on v6 but return 501 from triggerCampaignRecheck pending #10734, with recheck tests skipped accordingly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Andy Anderson <andy@clubanderson.com> Signed-off-by: Copilot <223556219+Copilot@users.noreply.github.com>
2 parents a909f89 + 43d631f commit 322338e

313 files changed

Lines changed: 16406 additions & 2101 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/ISSUE_TEMPLATE/contributor-story.yml‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,24 @@ body:
88
attributes:
99
value: |
1010
Thanks for sharing your story. Maintainers review issues with the `contributor-story` label and may promote verified stories to hivecommons.dev/stories.
11+
12+
<!--
13+
FOR MAINTAINERS AND AGENTS PICKING THIS ISSUE UP — where the story goes:
14+
15+
* Published page: https://hivecommons.dev/stories/
16+
* Source of that page: repository hivecommons/hivecommons.github.io,
17+
file stories/index.html, section "Stories we can link today"
18+
(<h2 id="real-stories-title">). It is a hand-edited static GitHub
19+
Pages site (no build step); copy an existing story card verbatim and
20+
fill in name, profile link, avatar (https://github.com/<handle>.png),
21+
project, role, PR/issue link, and the quote (only if "Can we quote
22+
you by name?" is checked). Run scripts/check-links.sh and
23+
node --test scripts/*.test.mjs there, then open a PR against main
24+
referencing this issue. It goes live when that PR merges.
25+
* Do NOT add stories to this repository (hivecommons/hive): not to the
26+
hub's static pages, not to src/docs. There is no stories page here
27+
and one must not be created (see #10644 / #10653).
28+
-->
1129
- type: input
1230
id: name
1331
attributes:

‎.github/release-lines.yml‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ pinned:
8686
# v4 is feature-frozen and not being imported as the initial Hive Commons
8787
# CNCF FOSSA project.
8888
fossa.yml: [-v4]
89+
# GitHub Actions Workflow triage compiles only on the active v5 line; older
90+
# release lines do not carry the gh-aw automation surface.
91+
gh-aw-compile.yml: [-v4]
8992
go-security-analysis.yml: [v5, v6]
9093
# Unit gate for the reusable hive action's app-handle helper (#9707). The
9194
# action and its smoke wiring live only on the v6 development line, so the

‎.github/scripts/pr-auto-update.sh‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
#!/usr/bin/env bash
2+
# Gate policy (#10443): push-triggered runs only call update-branch on PRs whose
3+
# changed files intersect the push. Incident recovery is served by the
4+
# marker-driven re-run (SHARED_CI_INCIDENT, #10442), which bypasses that gate.
5+
# An "N commits behind base" trigger (N~5) is deliberately not implemented; revisit
6+
# no earlier than 14 days after #10458 merges, sizing N from its update-branch
7+
# success / 422 / 403 counts.
28
set -euo pipefail
39

410
REPO="${GITHUB_REPOSITORY:?GITHUB_REPOSITORY is required}"

‎.github/workflows/ci-runner-image.yml‎

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@
55
#
66
# #7206 baked gcc/libc6-dev/tmux into the ARC runner image so race shards stop
77
# depending on apt egress from the cluster — the failure class behind #6648 →
8-
# #6870 → #6935 → #7124 → #7201 → #7289. The Dockerfile merged on 2026-09-16;
9-
# a day later the image still did not exist on GHCR, because publishing it was
10-
# left to "an operator with docker + GHCR write", and two more shards had died
11-
# at "Prepare cgo toolchain" in the meantime. This workflow removes the GHCR
12-
# half of that operator dependency: the build runs here, on a GitHub-hosted
13-
# runner, with the job's own GITHUB_TOKEN (packages: write). What remains for
14-
# an operator is the one thing CI cannot do — `kubectl patch` the
15-
# RunnerDeployment in `arc-systems` to the tag this run prints.
8+
# #6870 → #6935 → #7124 → #7201 → #7289. The image also carries GitHub CLI so
9+
# `gh`-driven automation can move off the hosted lane after this image is rolled
10+
# out. The Dockerfile merged on 2026-09-16; a day later the image still did not
11+
# exist on GHCR, because publishing it was left to "an operator with docker +
12+
# GHCR write", and two more shards had died at "Prepare cgo toolchain" in the
13+
# meantime. This workflow removes the GHCR half of that operator dependency:
14+
# the build runs here, on a GitHub-hosted runner, with the job's own
15+
# GITHUB_TOKEN (packages: write). What remains for an operator is the one thing
16+
# CI cannot do — `kubectl patch` the RunnerDeployment in `arc-systems` to the
17+
# tag this run prints.
1618
#
1719
# ── Where it runs ───────────────────────────────────────────────────────────
1820
#
@@ -28,17 +30,18 @@
2830
# workflow_dispatch builds AND pushes. Inputs pick the base runner image and
2931
# the tag suffix; the pushed tag is
3032
# ghcr.io/<owner>/hive-ci-runner:<runner version>-<suffix>,
31-
# e.g. v2.337.0-ubuntu-24.04-toolchain-1 — immutable by
33+
# e.g. v2.337.0-ubuntu-24.04-toolchain-gh-1 — immutable by
3234
# construction, as runner-image-patch.yaml requires. A
3335
# re-run with the same suffix is refused rather than
3436
# overwriting: ARC does not re-pull an unchanged tag, so a
3537
# silently replaced tag would make "which toolchain are the
3638
# runners on?" unanswerable.
3739
# pull_request builds only (no login, no push), path-filtered to the
3840
# Dockerfile and this file. The Dockerfile verifies
39-
# `gcc --version` / `tmux -V` during the build, so this is
40-
# the CI gate that keeps a Dockerfile change from shipping
41-
# an image that quietly sends shards back to the mirrors.
41+
# `gcc --version` / `tmux -V` / `gh --version` during the
42+
# build, so this is the CI gate that keeps a Dockerfile
43+
# change from shipping an image that quietly sends shards
44+
# back to the mirrors or lacks the CLI.
4245
#
4346
# No `push:` trigger, on purpose. A merged Dockerfile change must not roll a
4447
# new image tag on its own: the tag only matters once an operator patches the
@@ -73,7 +76,7 @@ on:
7376
(<runner version>-<suffix>). Bump it for every rebuild on the same
7477
base; an existing tag is never overwritten.
7578
required: true
76-
default: toolchain-1
79+
default: toolchain-gh-1
7780
type: string
7881
pull_request:
7982
paths:
@@ -108,7 +111,7 @@ jobs:
108111
#
109112
# The tag is <version part of the base image ref>-<suffix>: for
110113
# summerwind/actions-runner:v2.337.0-ubuntu-24.04 and suffix
111-
# toolchain-1 that is v2.337.0-ubuntu-24.04-toolchain-1 — the exact
114+
# toolchain-gh-1 that is v2.337.0-ubuntu-24.04-toolchain-gh-1 — the exact
112115
# example in README.md § "Baking the CI toolchain". Deriving it from the
113116
# base ref (rather than taking a free-form tag input) means the tag
114117
# always says which runner release it was built on, which is what the
@@ -201,7 +204,7 @@ jobs:
201204
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
202205
org.opencontainers.image.revision=${{ github.sha }}
203206
org.opencontainers.image.base.name=${{ steps.ref.outputs.base }}
204-
org.opencontainers.image.description=hivecommons/hive self-hosted CI runner with gcc/libc6-dev/tmux baked in (#7206)
207+
org.opencontainers.image.description=hivecommons/hive self-hosted CI runner with gcc/libc6-dev/tmux and gh baked in (#7206)
205208
206209
# Hand the operator exactly what the README's "Apply" step needs: the
207210
# immutable reference (tag and digest) and the two commands. This is the
@@ -243,7 +246,7 @@ jobs:
243246
else
244247
echo "| built (not pushed) | \`$REF\` |"
245248
echo
246-
echo "PR gate only: the Dockerfile built and its \`gcc --version\` / \`tmux -V\` verification"
247-
echo "passed. Nothing was pushed. Dispatch this workflow from \`v4\` to publish."
249+
echo "PR gate only: the Dockerfile built and its \`gcc --version\` / \`tmux -V\` / \`gh --version\` verification"
250+
echo "passed. Nothing was pushed. Dispatch this workflow from \`v5\` to publish."
248251
fi
249252
} >> "$GITHUB_STEP_SUMMARY"

‎.github/workflows/coverage-hourly.yml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ permissions:
3030

3131
jobs:
3232
coverage:
33-
runs-on: ubuntu-latest
33+
runs-on: ${{ fromJSON(vars.HIVE_RUNNER_LABELS || '["ubuntu-latest"]') }}
3434
# Hard cap so a hung runner / stuck -race build auto-fails instead of
3535
# blocking PR merges indefinitely (the go test -timeout only bounds the test
3636
# step, not checkout/setup/build/post-processing or a wedged runner). #3615.
@@ -70,7 +70,7 @@ jobs:
7070
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
7171
with:
7272
go-version-file: src/go.mod
73-
cache-dependency-path: src/go.sum
73+
cache: false
7474
- name: Guard shared Go cache (fall back when the runner volume is full)
7575
# The checkout above is pinned to the MEASURED ref, not the branch this
7676
# workflow file lives on, so the helper script only exists when that ref
@@ -159,7 +159,7 @@ jobs:
159159
[tracing]=85
160160
[review]=80
161161
[retro]=82
162-
[github]=89 # 91.8% on 2026-09-01
162+
[github]=88 # 88.9% on 2026-10-05
163163
[hivectl]=88
164164
[knowledge]=89
165165
[proxy]=89
@@ -394,7 +394,7 @@ jobs:
394394
# pull_request, an unscoped condition would additionally file an issue for
395395
# every contributor's red PR.
396396
if: always() && github.event_name == 'schedule' && needs.coverage.result != 'success'
397-
runs-on: ubuntu-latest
397+
runs-on: ${{ fromJSON(vars.HIVE_RUNNER_LABELS || '["ubuntu-latest"]') }}
398398
needs: coverage
399399
permissions:
400400
contents: read

‎.github/workflows/dco-post-merge.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ jobs:
207207
# runs on every PR that touches the checker, its tests, or this workflow.
208208
checker-selftest:
209209
name: Self-test the DCO checker
210-
runs-on: ubuntu-latest
210+
runs-on: ${{ (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) && fromJSON(vars.HIVE_RUNNER_LABELS || '["ubuntu-latest"]') || 'ubuntu-latest' }}
211211
timeout-minutes: 5
212212
steps:
213213
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
@@ -222,7 +222,7 @@ jobs:
222222
# (the PR's own commits are covered by the pre-merge DCO check), so the
223223
# monitor half sits out and only the self-test above runs.
224224
if: github.event_name != 'pull_request'
225-
runs-on: ubuntu-latest
225+
runs-on: ${{ fromJSON(vars.HIVE_RUNNER_LABELS || '["ubuntu-latest"]') }}
226226
timeout-minutes: 10
227227
strategy:
228228
fail-fast: false

‎.github/workflows/dco-push-delta.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ permissions:
3939
jobs:
4040
dco-push-delta:
4141
name: DCO check on newly pushed commits
42-
runs-on: ubuntu-latest
42+
runs-on: ${{ (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) && fromJSON(vars.HIVE_RUNNER_LABELS || '["ubuntu-latest"]') || 'ubuntu-latest' }}
4343
timeout-minutes: 5
4444
steps:
4545
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

‎.github/workflows/dco-squash-attribution.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ permissions:
2828
jobs:
2929
squash-attribution:
3030
name: Sign-off survives the squash
31-
runs-on: ubuntu-latest
31+
runs-on: ${{ (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) && fromJSON(vars.HIVE_RUNNER_LABELS || '["ubuntu-latest"]') || 'ubuntu-latest' }}
3232
timeout-minutes: 5
3333
steps:
3434
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

0 commit comments

Comments
 (0)