Repository navigation
π± top-up: merge v5 into v6 (51 commits) - #13283
Conversation
#13133) * π In-progress sweep and claim read fall back to the hub's claim ledger A ledger claim whose hive:claim marker comment was suppressed by the per-issue comment budget read as 'no claim' to SweepInProgressIssues and annotateIssueClaims, which stripped stage/020-claimed and flipped the issue back to 010-actionable while the scheduler still withheld it. Fixes #13132 Signed-off-by: Andrew Anderson <andy@clubanderson.com> * π Refresh scale-envelope citation after client.go field insertion Signed-off-by: Andrew Anderson <andy@clubanderson.com> --------- Signed-off-by: Andrew Anderson <andy@clubanderson.com>
β¦eholder questions (#13139) * π 085 entry comment follows the decision cause; flag @maintainer placeholder questions A PR parked at stage/085-needs-decision gets its entry comment once per stage visit. When the maintainer clears the cause the comment named (sentinel alert) and a different lane fence keeps the PR at 085 (workflow-path), the stage does not change and nothing tells them why the PR is still parked. The stage store now remembers the cause digest of each entry comment per stage+head and postHumanEntry re-posts for a cause this visit has not explained; each distinct cause is posted once per head and records from before the change count as explained. Reviewer decision questions copied the policy example's literal @maintainer, which GitHub notifies nobody for. The policy now asks for a real approver login and the 085 comment marks a placeholder mention. Fixes #13137 Signed-off-by: Andrew Anderson <andy@clubanderson.com> * changelog: fragment for #13139 Generated by changelog-fragment-guard from the PR title (#5675). Edit the wording freely, or replace this file with the no-changelog label if the change is not user-visible. Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: clubanderson <407614+clubanderson@users.noreply.github.com> --------- Signed-off-by: Andrew Anderson <andy@clubanderson.com> Signed-off-by: clubanderson <407614+clubanderson@users.noreply.github.com> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
β¦3140) * π Moves within 070/071/072 re-attribute the fix, not a regression 072 β 070 on hive-signoff-attribution (the hive's own follow-up commit broke the squash sign-off gate, so the hive takes the breakage back) and 072 β 071 when the author kind is learned late were flagged regressed, with a stage-regressed comment and tracker chip, because 070 < 072 numerically. Nothing moved backwards for the author; IsRegression now treats the fixing family as one state split by who owes the fix. Fixes #13138 Signed-off-by: Andrew Anderson <andy@clubanderson.com> * changelog: fragment for #13140 Generated by changelog-fragment-guard from the PR title (#5675). Edit the wording freely, or replace this file with the no-changelog label if the change is not user-visible. Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: clubanderson <407614+clubanderson@users.noreply.github.com> --------- Signed-off-by: Andrew Anderson <andy@clubanderson.com> Signed-off-by: clubanderson <407614+clubanderson@users.noreply.github.com> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
β¦sion reasons (#13152) Backport of #13117 to v5, in the engine-native form that landed on v6 with the v5βv6 top-up (#13141, ed14048): requiresHumanStage gives the trusted-lane role check and contributor-lane admission reasons a weak 085 opinion when the head's reviewer verdict is already requires_human, resolveStage keeps that weak 085 whatever the tier, and RouteHuman's fresh-head exit no longer applies when the verdict is requires_human. A requires_human verdict on an untrusted contributor-lane PR therefore derives stage/085-needs-decision instead of 050-review-pending + stalled. Stage goldens regenerated with -update (44 cases, all route=fresh/verdict=requires_human 050 β 085). transition_table.go untouched. Signed-off-by: Andrew Anderson <andy@clubanderson.com>
β¦son login (#13150) Backport of #13125 to v5. fixPushAllowed delegated to hiveAuthored, so contributor-relay PRs (person login, `β hive:` trailer) still got a hive-signed fix commit that the squash sign-off gate rejects as bot-signoff. The push now requires an agent/App login author, or a PR the stage reconciler adopted in place (stage/074-adopted-by-hive, the v5 exception the v6 top-up kept); the fix is proposed in the review otherwise. (cherry picked from commit 31662b0) Signed-off-by: Andrew Anderson <andy@clubanderson.com>
* β¨ Sidebar x/y count pills for Overview and Governor Overview shows open issues / open PRs from the stage tracker working set (GET /api/stage-tracker items by kind); Governor shows the shared actionableNow.issues / .prs split from /api/status, the same numbers the Governor tiles print. Both reuse .badge-count .oc-nav-count and stay hidden until their feed has answered once. Closes #13147 Signed-off-by: Andrew Anderson <andy@clubanderson.com> * changelog: fragment for #13148 Generated by changelog-fragment-guard from the PR title (#5675). Edit the wording freely, or replace this file with the no-changelog label if the change is not user-visible. Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: clubanderson <407614+clubanderson@users.noreply.github.com> --------- Signed-off-by: Andrew Anderson <andy@clubanderson.com> Signed-off-by: clubanderson <407614+clubanderson@users.noreply.github.com> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
β¦action (#13163) Backport of #13092 (fixes #13087 on v6) to v5. `/hive approve` on a pull request was silently skipped by the un-park sweep unless the PR sat at `stage/085-needs-decision`, and the 085 entry comment never said what would actually release the hold. The sweep now answers `/hive approve` on any open PR once per comment (marker- deduplicated, no label writes) with what the merge lane will do with it, and `stage/085-needs-decision` comments carry a "How to release it" list supplied by the lane, naming manual-only merges explicitly. Deviations from the v6 change: v5 has no review hold-release ledger (#13088 is v6-only), so no lane consumes `/hive approve` on a PR here. The reply therefore acknowledges the comment and names the v5 release lever β a trusted merger's GitHub Approve review on the exact head β instead of recording a release; the "no active hold" and "predates the latest verdict" branches are not ported. Lane actions use the same wording and the existing #13041 "What to do" block is kept. Signed-off-by: Andrew Anderson <andy@clubanderson.com>
* π fix: lead superseded contributor PR threads with the close/keep-open decision Backport of #13120 to v5 (additive rendering only). - Review comments render the hive-decision-question as visible text at the top; the HTML marker is unchanged. - A review marked <!-- hive-redundant-of: #N --> shows "no-op merge: duplicate of #N" instead of the numeric score headline. - The supersession sweep notice states the recommendation (close as superseded) and the other choices. (cherry picked from commit d0c869e) Signed-off-by: Andrew Anderson <andy@clubanderson.com> * π fix: offer superseded PR decisions without auto-close Backport of #13118 to v5. Superseded contributor PRs now appear in the Review Queue with close / keep-open actions even when supersession_sweep.close_contributor_prs is unset. The sweep emits a detected-contributor audit event on every detection (and kept-open when hive/keep-open is present), including when its notice is already present. The queue reader accepts detection and legacy grace entries; existing auto-close guards and grace events remain intact. An explicit keep-open label suppresses the recommendation, and disabled auto-close shows no countdown and never promises an automatic close. Deviation from v6: the your-turn inbox (dashboard ownership rules, SupersessionStatusOption, superseded_recommended_close) is v6-only and is not ported; only the Review Queue half lands here. Signed-off-by: Andrew Anderson <andy@clubanderson.com> --------- Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Signed-off-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com> Co-authored-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com> Co-authored-by: MikeSpreitzer <14296719+MikeSpreitzer@users.noreply.github.com>
β¦13160) Signed-off-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com> Co-authored-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com> Co-authored-by: gregoryhunt <31053269+gregoryhunt@users.noreply.github.com>
β¦o pair (#13131) Signed-off-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com> Co-authored-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com>
β¦13171) * π entrypoint: provision users and token caches for replicas: copies A replicas: copy (<agent>-2 .. <agent>-N) is derived in memory by ExpandAgentReplicas and stripped on save, so the entrypoint never saw its name: no hive-<agent>-N user, no private token group, no pre-created token cache. The manager ran it as a bare uid:node and the token write created the cache dev:node 0600, so every gh call in the replica was blocked with token_cache_unavailable, permanently. Move the inline agent-name collection into hive_collect_agent_names and expand replicas there with the same naming and 2..MaxAgentReplicas bound as config.replicaAgentName, so replicas are provisioned at boot like declared agents. Raising replicas on a running hive still needs a restart for the new copies, the same as an agent added through the API. Fixes #13166 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CoYvUkv8Gp4AHGWLo97nqb Signed-off-by: Gregory Hunt <greg@on-board.ai> * π changelog fragment for #13166 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CoYvUkv8Gp4AHGWLo97nqb Signed-off-by: Gregory Hunt <greg@on-board.ai> --------- Signed-off-by: Gregory Hunt <greg@on-board.ai> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
β¦vidence (#13172) v5 backport of #13099. A stall that the harness nudge recovered is self-recovery working (#12814) and is no longer counted toward the fleet-report defect bar; only unrecovered stalls remain evidence. (cherry picked from commit 9802648) Closes #13157 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
The 'Make the default branch resolvable' step used --depth=0, which git rejects ('depth 0 is not a positive number'), and the failure was masked by '|| true', so the step was dead code and the check only worked because actions/checkout fetch-depth: 0 happened to populate the ref. Drop --depth=0 and || true and verify the ref so a fetch failure fails the step visibly.
(cherry picked from commit c35db2f)
Closes #13158
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
β¦'t ping fork authors (#13143) A review-backlog finding whose evidence file exists only on the reviewed PR (absent on its base branch) is filed with the blocked label and a <!-- hive:blocked-on pr=owner/repo#N --> marker, without help wanted. A blocked issue lands in the filtered bucket, derives no stage label, and IssueClaimBlockReason refuses every automated claim on it; a sweep after each stage-label sync lifts the label once the tracked PR merges or closes and strips help wanted while it is open. hive-open-issue comment --blocked-on-pr <n> posts the same neutral note through the issue-request watcher with @-mentions stripped, and the scanner prompts point at it instead of @-mentioning the fork author. The contributor lane keeps a session off an issue it just failed, abandoned or had its lease revoked on for governor.claims.reclaim_cooldown_s (default 6h) instead of handing it back every ten minutes when the global failure cooldown lapses. Fixes #13142 Part of #12999 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
GET /api/campaigns folds completed runs from the package-global lifecycle timeline store (lifecycleStore singleton) into the list. Under -shuffle a stage-completion journey for acme/repo!graph-a:node-a recorded by an earlier test leaked in and the unfiltered list returned 3 campaigns instead of 2. Reset the singleton at the top of the test like the other campaign/run tests already do. Reproduced deterministically by replaying the CI shuffle seed 1792510983440914831 on dashboard slice 1/2 before; passes after. Fixes #13167 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
bootDashboardWith launches backfillRecentMergedPRs in a goroutine that logs through b.logger; the test read log.String() from an unsynchronised strings.Builder while that goroutine was still writing, which -race flags intermittently. Use the package's existing goroutine-safe syncLogBuffer as the sink instead. Reproduced 1/900 with -count=300 -race -cpu 1,2,4 before; 0/900 after, plus -count=200 -race -shuffle=on clean. Fixes #13168 Fixes #13169 Fixes #13170 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
The merge-request relay (hive-merge β merge-request watcher β MergePR as the App) gated on agent authority, merge-eligible.json at a pinned head, labels and positive CI, but never on the contributor-lane policy the auto-merge sweep enforces. A scanner's merge request therefore landed an untrusted-tier contributor PR (green at stage/060, never soaked) that the lane would have refused on tier and soak alone. - Split the contributor-lane sweep's evaluation out of its merge tail (evaluateContributorLanePR) and expose Engine.RelayMergeRefusal, which runs the same gates read-only: tier admission, association, diff fences, control labels, review verdict, CI with min_head_age, soak, human-merge paths and head-SHA pinning. App, trusted-bot and trusted-author-role authors keep today's relay behaviour. - Add a MergeRequestPolicyGate hook on the GitHub client; the watcher consults it before any branch update, denies terminally (.denied) with the gate named in the agent's result, audits merge_request_refused, and fails closed on unreadable evidence through the bounded retry path. The hive installs the auto-merge engine's RelayMergeRefusal through the request-relay supervisor, so rebuilt clients re-arm it. - classifyMergeEligibility no longer lists PRs parked on a human decision (stage/085-needs-decision, or the issue-side stage/045 spelling). Signed-off-by: Andy Anderson <andy@clubanderson.com>
β¦ in seconds (#13165) * β¨ Webhook deliveries wake the eval loop and refresh the stage tracker A verified GitHub webhook that invalidates cached PR/issue state now asks the governor loop for an early, debounced eval cycle (governor. webhook_wake_debounce_s / webhook_wake_min_gap_s) that re-enriches only the dirty PRs, so eval_interval_webhook_s is a safe base tick and GitHub calls go down. The loop re-checks webhook health as the 2x eval_interval_s window closes and falls back to eval_interval_s at once, logging one line per transition; /api/status reports evalMode, lastWakeReason, lastWakeAt. Every status publish invalidates the /api/stage-tracker cache and sends a stage-tracker SSE event the SPA refetches on. The spoke handles pull_request_review_comment and the hub relays it plus issues. Closes #13164 Signed-off-by: Andrew Anderson <andy@clubanderson.com> * π± Fix webhook waker coalesced expectation in test Signed-off-by: Andrew Anderson <andy@clubanderson.com> * π± Only nudge the stage tracker over SSE once it has been served Signed-off-by: Andrew Anderson <andy@clubanderson.com> * π± Expose webhook wake pacing keys in the governor Settings UI Signed-off-by: Andrew Anderson <andy@clubanderson.com> * π Refresh api-reference citations after server.go line shift Signed-off-by: Andrew Anderson <andy@clubanderson.com> --------- Signed-off-by: Andrew Anderson <andy@clubanderson.com>
The test pressed K three times and asserted exactly one POST left, relying on the second press being processed before the first response cleared kickPending. The fixture answers instantly, so when the test goroutine is descheduled between presses (CI under -race load) the first kickResultMsg lands first, kickPending is cleared and the second press issues a second request. Hold the /api/kick/scanner response with the fixture's existing gate() until all three presses have been processed (same pattern as the ACMM exactly-once test), then release it and assert the queued footer. Fixes #13191 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Hive-Run: #13146 Hive-Plan: contributor-dispatch-target-branch Hive-Spec: contributor-dispatch#wrong-base-verdict Signed-off-by: hanthor <5840441+hanthor@users.noreply.github.com> Co-authored-by: hanthor <5840441+hanthor@users.noreply.github.com> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com>
β¦er fix kicks before governor kicks (#13188) The merge-lane review gate skipped the trusted-human-approval lookup for any changes-requested outcome, and classified the head from the perspective map rather than the aggregate verdict, so a requires_human head read as changes-requested:style to the gate and an owner's APPROVED review on the exact head never cleared it. The gate now follows the normalized aggregate verdict (new requires-human outcome) and a trusted human's approval on the head overrides every non-approved outcome; the review_evaluated audit line records human_approver and overrode. Review-plan fix kicks (a maintainer's changes_requested review or /hive decision) were assembled after the governor kick to the same agent, so the governor kick owned the agent and the fix kick timed out every cycle; fix kicks now go first, and an undelivered review/fix kick is logged and audited by PR. Signed-off-by: Andy Anderson <andy@clubanderson.com>
β¦est (#13198) contains() piped the full generated YAML into grep -qF; grep exits on the first match, printf then hits EPIPE, and set -o pipefail turns a genuine match into 'FAIL: valid name kata-clh is emitted'. Compare with a bash substring match instead, which reads the whole haystack. Signed-off-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com> Co-authored-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com>
The Evidence card's "Outcome by author kind" reported every PR this hive reviewed but did not merge as "outcome unknown" (33 of 137 in a 24h window on hive's own spoke), although the governor's review-outcome ledger had already resolved 29 of them with a GetPRState call. - pkg/evidence: new optional `outcome` block on the bundle (source, state, at, merged_by/merged_at/closed_at) with Validate + JSON schema rules; FoldPRs honours it (OutcomeKnown, MergedElsewhere, Closed) and ApplyOutcomeHints applies ledger rows at read time to PRs whose records state no outcome. - pkg/github: Client.RecordReviewEvidenceOutcome stamps the newest bundle for a PR merged by someone else (with an `unrecorded` merge event naming the merger) or closed without merge, under reviewEvidenceMu; never touches a bundle that already states an outcome. No GitHub API calls. - cmd/hive: recordReviewOutcomesAt calls it after ledger.Resolve. - pkg/dashboard: summary adds merged_elsewhere per author kind and missing.prs_outcome_from_ledger; prs_outcome_unknown now means truly unresolved; the card footnote shows the merged-elsewhere / closed / open breakdown. A separate `outcome` block is used instead of `backfill` because Validate requires backfilled:true alongside `backfill` and readers treat backfilled bundles as carrying no live verdicts or CI. Fixes #13186 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
β¦3217) Runtime-error self-report issues now carry the reporting hive's display name and dashboard URL: the Evidence table gains 'hive name' and 'spoke' rows and each 'Affected hives (N)' line renders 'name (hive id) (instance β¦) β [open](url) β owner(s) β¦'. The spoke emits both best-effort (project.name; dashboard.public_url else hub.dashboard_url) only when hub-managed, so anonymous hives stay anonymous. The hub relay overlays its authoritative project_name and vanity URL and fills the rows for spokes that predate the fields, the same enrichment pattern as owner(s). Rendering is byte-identical when the fields are absent, so older reports and issues are unchanged. Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Every Evidence panel now shows a server-computed letter grade (A+ β¦ C-, or β when there is not enough data) in the header and a one-sentence plain-English summary under it. Rubrics and summary generators are pure functions in pkg/evidence/grade.go, exposed additively as cards[key] on /api/evidence/summary. Dense stats, denominators and "what this does not show" move behind the β popover; the CI gate card's disclosed line drops to the muted small size so nothing in a card exceeds the title size. Fixes #13204 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
β¦es across the fleet (#13210) * π Release agent issue claims on relaunch and pace rate-limit relaunches across the fleet An agent claim (2h TTL) survived the hive rollouts that killed the holding agent: nothing released it, and the π marker on the forge read as live until until= even when the ledger had dropped it, because issueclaim.Latest ignored hive:release markers. The scanner's claim on an issue therefore parked it at stage/020-claimed for two hours across two image rolls with nothing working it. - agent.Manager gains a relaunch observer fired on every fresh CLI launch; cmd/hive wires it to Ledger.ReleaseAgentClaims, which drops only that agent's KindAgent claims and fires OnReleased. - The release hook posts the release comment for the relaunch reason, and the release marker now carries at=; issueclaim.Latest marks the latest claim Released when a later release marker names its identity. - Rate-limit relaunches of Copilot agents are spaced fleet-wide (30s) on top of the per-agent 300s cooldown, so the agents that tripped GitHub's limit during the boot stagger do not all re-validate together 300s later. Signed-off-by: Andy Anderson <andy@clubanderson.com> * π test: assert expiry posts nothing without a sleep (sleep ratchet) Signed-off-by: Andy Anderson <andy@clubanderson.com> --------- Signed-off-by: Andy Anderson <andy@clubanderson.com>
β¦ed stage transitions (#13136) * π fix: register covering-PR-close and claim reshuffle edges as expected stage transitions Signed-off-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com> * test: 045β020 is a non-regression hop, not an undrawn regression Every backward issue edge among 010β040 is drawn now, and IsRegression never flags a move out of 045, so the old 'undrawn regression' sample is expected. Signed-off-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com> * π docs: 040 falls are narrated on the PR, not commented on the issue The three 040 β 010/030/020 edges were labelled "(backward hop, commented)" in both the stateDiagram and transition_table.go, but the issue reconciler only comments regressions whose previous stage is before 040 (issue_stage_labels.go: a covering PR's own falls are narrated on the PR). Relabel them "narrated on the PR" and widen the prose enumeration of drawn issue fallbacks to include 030 β 020 and the 040 falls. Hive-Fix-Attempt: 1/6 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com> --------- Signed-off-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com> Co-authored-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
β¦re the hive opens the PR (#13209) A hive-authored docs PR was opened as "π docs: β¦" and failed the repository's required PR Type check: the agent prompt and AGENTS.md said π for docs while review_priority.go read π as docs too, so nothing told the agent the two differ (π is the proposal emoji). Define the convention once (PRTitleEmoji* in pkg/github/pr_title.go), make review_priority draw from it, spell the convention out in the hive-open-pr instructions and AGENTS.md/CONTRIBUTING.md, and have the pr-request watcher correct a leading emoji that contradicts the Conventional Commits type before CreatePR. A title with no emoji is never given one, so repositories that gate on a bare header are untouched. Signed-off-by: Andy Anderson <andy@clubanderson.com>
β¦e author, not 070 (#13207) A human's or clanker's PR whose commits GitHub links to the hive App (a hive follow-up, or a contributor committing from a hive pod with the App's noreply address) was routed to stage/070-fixing under hive-signoff-attribution. No hive lane pushes to a non-App branch, so the PR sat where nothing could act (pluk#315, promptargs#303, rationguard#303, dibs#438, hivecommons.github.io#222 on 2026-10-20). Route it by author kind (071 human / 072 clanker, 070 only when self-authored) and tell the human author once per head exactly what to run (git commit --amend --reset-author -s && git push --force-with-lease, or the git rebase --exec form). The clanker's 072 nudge carries the same ask. Also classify the trusted-author lane's review-gate holds (no-review-bundle / awaiting-review-approval) as 050-review-pending: they had no stage opinion, so a PR carried no stage label at all until the swarm's verdict was noted. Signed-off-by: Andy Anderson <andy@clubanderson.com>
Carries v5 through origin/v5 (incl. the runtime CA trust-bundle fix, #13230/#13247) into v6 as a --no-ff merge. Conflicts resolved preferring v5 for shared code and v6 where v6 intentionally diverged (config split, /hive approve-on-PR hold release, kick dispatch after first status publish). Signed-off-by: Andrew Anderson <andy@clubanderson.com>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Open PR overlap checkBase branch: Conflicts are checked with every PR merged onto the current tip of
|
|
@clubanderson is auto-promoted for contributor-lane merging on this PR: the last 5 merged PRs by this author in this repository have no revert or sentinel-alert evidence. CI, reviewer verdict, diff fences, soak, holds and branch protection still apply. |
|
@clubanderson this PR is back in your court (
Once the new head lands, CI and the review swarm re-run automatically and the PR returns to the normal path. |
c296fde
βΉοΈ Sentinel notice β informational; author is trusted (owner), merge is not blockedHive flagged this PR (author @clubanderson, head
Hive did not add the |
β¦ots; bump runner gh to 2.102.1 Both breakages post-date the v5 commits this top-up carries and fail every image build on v5 today too: - Debian trixie 20250419+deb13u1 / Alpine ca-certificates-20261020-r0 / Ubuntu noble package refreshes already drop the emSign ECC Root CA - G3 and Comodo AAA Services entries, so the unconditional `sed && grep -q` distrust step in src/Dockerfile, Dockerfile.contributor, Dockerfile.hub, .oss-scanner/Dockerfile and src/deploy/ci-runners/Dockerfile fails the build. Each entry is now rewritten only when present; the final tests still prove the roots are absent from the regenerated bundle. Applied from the in-flight v5 fix #13266 (scanner/fix-hub-ca-bundle) so the next top-up merges cleanly. - cli.github.com's apt repo no longer serves gh 2.102.0 (only 2.102.1), so the CI runner image PR gate failed on `apt-get install gh=2.102.0`. Signed-off-by: Andrew Anderson <andy@clubanderson.com>
|
@clubanderson this PR is back in your court (
Once the new head lands, CI and the review swarm re-run automatically and the PR returns to the normal path. |
4b3dc2b
βΉοΈ Sentinel notice β informational; author is trusted (owner), merge is not blockedHive flagged this PR (author @clubanderson, head
Hive did not add the |
|
merged by Hive trusted-author auto-merge: author @clubanderson holds role owner and GitHub permission admin on repo; CI green at 4b3dc2b. |
|
Thank you for your contribution! Your PR has been merged. We'd love to hear how your experience was: share feedback |
|
/lgtm |
Summary
Forward-merge of
v5intov6as a--no-ffmerge commit (51 commits,origin/v6..origin/v5). Successor to #13141.Urgent payload: the runtime CA trust-bundle fix β #13230 (
ae8939600, refresh CA bundle and distrust two roots) and its follow-up #13247 (7d1b5a3ae, CA-distrust check passes platform / ignores docker stderr) β so the:edgeimage built from v6 picks it up.Notable v5 changes carried
src/Dockerfile.huband friends)hivectl hives hub add/list/show/removegovernor.webhook_wake_debounce_s/webhook_wake_min_gap_s)review_modelsfor cross-family perspectives (review.perspective_models)model_discovery_degradedself-report on not-licensed Copilot 403Conflicts resolved (31 files)
changelog.d/fixed-13087-*.md,fixed-13114-*.mdsrc/Dockerfile.hubbin/hive-open-issue.sh,src/docs/hive-open-issue.md--step-kind/--release-tag/--release-target+ v5--blocked-on-pr; argv positions renumbered;bin/test_hive_open_issue.shpassessrc/cmd/hive/main.goWebhookWake,EvalLoop); v5logUndeliveredReviewKickadded to v6onFailed; v6 kick-dispatch-after-first-publish (#8659) kept, so #13182's relocation was not applied; v6BuildFrontendStatusoptions keptsrc/pkg/config/*review_config.go(ReviewModelSelection,PerspectiveModels),governor_config.go/dashboard_config.go/defaults.go(webhook-wake pacing)src/pkg/dashboard/server.go,task_run_log.go,contribute_task_prompt.go,static/index.html, testsEvalLoopStatus, governor badge, Release row,VerdictTargetBranch,taskBaseBranchForIssue+ v6 JWKS/Runs nav/stdio block/readIssue)src/pkg/dashboard/api_review_queue_superseded{,_test}.gosrc/pkg/github/client.go,merge_request_watcher.go,issue_request_watcher.gomergePolicyGate; v6 NeedsDecision-on-comment + v5BlockedOnPR; duplicate helpers dedupedsrc/pkg/github/automerge/automerge_contributor_lane.go,automerge_stage_labels.goreviewGateStageunionsrc/pkg/review/dispatch.goNewHuman+SkippedReviewModels), v6 bot-shaped-login fix-push gating (#13134)src/pkg/stagelabels/human.goDecisionComment/DecisionActionskept (see judgement calls)reviewer-queue,labels-and-control-signals,api-reference,maintainer-commands,review-queue-triage,scale-envelope,operator-reference,review-swarm)Judgement calls
/hive approveon a PR: v6 (π fix: answer /hive approve on a PR as the hold release it is and name per-lane actions in the 085 commentΒ #13156) treats it as a hold release; v5 (π (v5) unpark: answer /hive approve on a PR and name the lane's release actionΒ #13163/π fix: acknowledge /hive approve on hive-authored PRs only for trusted mergersΒ #13185) only acknowledges it. v6 semantics kept: v5'sdecisionActionswiring,Route.Actionsand the v5-onlyTestDecisionCommentNamesLaneActionwere dropped, and v5'sPRApproveReplyhook is left unwired so v6'spr_unpark_decision.goanswers PRs (no double replies). v5'sPRApproveReplycode/tests remain in-tree.publishStatusBeforeKicksis present with its tests but not wired inmain.go.config.gointo per-area files; v5 edits ported manually rather than taking either side wholesale.scale-envelope.mdcitation re-pointed toclient.go:4162-4172(line shift only).Follow-up commit on the branch (CI drift, not merge errors)
4b3dc2b86β both failures reproduce on v5's owndocker.ymlpushes today and post-date the carried commits:ca-certificatespackages (trixie20250419+deb13u1, Alpine20261020-r0, noble) already drop the emSign/Comodo entries, so the unconditionalsed && grep -qfails the build. Applied the in-flight v5 fix π fix: image builds tolerate ca-certificates packages dropping the withdrawn rootsΒ #13266 (same patch,git apply -3, clean) tosrc/Dockerfile,Dockerfile.contributor,Dockerfile.hub,.oss-scanner/Dockerfile, plus the same tolerance forsrc/deploy/ci-runners/Dockerfile. When π fix: image builds tolerate ca-certificates packages dropping the withdrawn rootsΒ #13266 lands on v5 the next top-up merges cleanly.gh=2.102.0; bumpedGITHUB_CLI_VERSIONto 2.102.1.Tests
go build ./... && go vet ./...clean.go test ./...β only local-environment failures (macOS tmux socket path length inpkg/agent, git retagger outside repo inpkg/releasesentinel,TestBinaryExec_Deadlineinpkg/spektacular), none merge-related; CI is authoritative.Coverage vs floors: cmd/hive 76.5 (42), agent β CI, dashboard 87.1 (84), github 89.8 (88), automerge 90.9 (88), hub 88.8 (87), proxy 90.5 (89), review 94.3 (80), stageengine 96.3 (90).
Gates:
check-docs-citations.py1390 verified / 0 drift;check-api-reference-citations.sh --fix17 rewritten;check-docs-links.pyclean;check-cli-model-lists.shsame warning as v6 baseline. No changelog fragment for the merge itself; no stage goldens ortransition_table.gochanged.