Repository navigation
🌱 top-up: forward-merge v5 into v6 (2026-10-16) - #12556
Conversation
Automated release commit. Compiles changelog.d/ fragments and moves the CHANGELOG.md Unreleased section into a dated v5.177.5 entry. See src/docs/releases.md. Signed-off-by: hive-release-bot <actions@github.com>
release: v5.177.5
…ross the page (#12308) The *UIHasNoUndefinedCallees tests build one regexp per callee that starts with an alternation or a (?m)^\s* anchor, so Go's matcher has no literal prefix and walks the whole 3 MB index.html once per name. Under -race that is ~4 s per name: TestUpstreamWatchUIHasNoUndefinedCallees alone took 54 s and the family ~105 s of the rest 1/5 shard's 10-minute pkg/dashboard budget. jsDeclaredNear runs the unchanged regexp only over a line-aligned window around each literal occurrence of the name. Every alternative in these regexps contains the name, so the verdict is identical (71 name/pattern pairs checked against both pages, 0 mismatches) and the four tests drop from ~11 s to ~0.4 s without -race. Signed-off-by: quality <quality@hive.kubestellar.io> Co-authored-by: quality <quality@hive.kubestellar.io>
…parity batch 8) (#12313) Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com>
…id-rollout (#12168) * 🐛 fix(hub): do not advance a stale upgrade while the spoke is still mid-rollout Signed-off-by: scanner <scanner@hive.kubestellar.io> * docs: resync api-reference citations after hub/server.go struct change Merges v5 (which already resolved the pre-existing pkg/dashboard/api.go citation drift) and re-runs check-api-reference-citations.sh --fix so the 26 pkg/hub/server.go route citations shifted by the RegistryEntry field addition resolve again. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: adjudicator <adjudicator@hive.kubestellar.io> --------- Signed-off-by: scanner <scanner@hive.kubestellar.io> Signed-off-by: adjudicator <adjudicator@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: adjudicator <adjudicator@hive.kubestellar.io> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…×model) (#12315) * dashboard: Evidence sub-panel in Throughput (calibration, accuracy x model) (#12064) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com> * dashboard: tokenize evidence legend/svg styling for the style ratchet TestStyleRatchet counts non-var() font-size and border-radius values; the Evidence sub-panel added one raw 9px font-size and four raw border-radius values. Use --fs-2xs for the SVG labels and make square swatches the default so only the round calibration swatch (.dot) needs a radius token. Signed-off-by: scanner <scanner@hive.kubestellar.io> --------- Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com>
Signed-off-by: operations <operations@hive.kubestellar.io> Co-authored-by: operations <operations@hive.kubestellar.io> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Automated release commit. Compiles changelog.d/ fragments and moves the CHANGELOG.md Unreleased section into a dated v5.178.0 entry. See src/docs/releases.md. Signed-off-by: hive-release-bot <actions@github.com>
release: v5.178.0
… 9) (#12327) Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com>
#12331) Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io>
…gate (#12337) * ✨ review: add review.shadow to record would_have_held for the review gate Hive-Run: #12104 Hive-Plan: RFC #12062 / #12068 shadow-mode gates Hive-Spec: review-shadow#would-have-held Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: mrbobbytables <mrbobbytables@users.noreply.github.com> (cherry picked from commit a187caa) Signed-off-by: Andy Anderson <clubanderson@users.noreply.github.com> * 🧪 review: reference review.shadow for settings parity and test the shadow write path Adds a review.shadow reference in the review config handler so the Settings parity test sees the new toggle, and a round-trip test for recordReviewShadow through MergeReviewEvidenceShadow. Hive-Fix-Attempt: 1/6 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> Signed-off-by: Andy Anderson <clubanderson@users.noreply.github.com> * 🧹 review: share the shadow evidence writer and tighten review.shadow logging Review follow-ups for #12158 (review.shadow, #12104): - Branch the review-verdicts.json load warning on require_approval so a shadow-only run no longer claims merge eligibility will fail closed. - Extract writeShadowEvidence, shared by intent.shadow and review.shadow, so the two recorders cannot drift again; recordReviewShadow now gets the logger==nil fallback and logs confidence like the intent gate. - When a signing key is configured but unusable, skip the shadow write and Warn instead of rewriting a signed bundle as unsigned. - Record both shadow observations from one eligible block with a shared evaluated_at. - Move the review shadow code to review_shadow.go beside its test, and add the dashboard PUT/GET + Settings toggle parity coverage for review.shadow. Hive-Fix-Attempt: 2/6 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> Signed-off-by: Andy Anderson <clubanderson@users.noreply.github.com> * 📝 review: document review.shadow in openapi.json and the intent.shadow signing-key change Add review.shadow to the /api/config/review GET response and PUT request schemas in dashboard/openapi.json so the spec matches what handleReviewConfigGet/Put emit and accept. Add a changed- changelog fragment for writeIntentShadow now skipping (Warn) instead of writing unsigned when a configured signing key fails to load. Hive-Fix-Attempt: 3/6 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> Signed-off-by: Andy Anderson <clubanderson@users.noreply.github.com> * 🧪 review: make the unusable-signing-key test use a malformed key and drop the toggle's inline style - TestRecordReviewShadowSigningKeyUnusable pointed SigningKeyFile at a missing file, which LoadSigningKey treats as "no key" (records unsigned by design). Write a malformed key so the test exercises the guard that skips the write with a Warn. - The new Settings toggle added an inline style="margin-top:10px", pushing operator index.html over the style-ratchet baseline; .config-toggle already spaces stacked toggles via margin-bottom, so drop it. - Document the signing-key caveat in review-swarm.md / intent-verification.md and list review.shadow in hive.yaml.example (swarm docs-currency notes). Signed-off-by: Andy Anderson <clubanderson@users.noreply.github.com> --------- Signed-off-by: mrbobbytables <mrbobbytables@users.noreply.github.com> Signed-off-by: Andy Anderson <clubanderson@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: mrbobbytables <mrbobbytables@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: Andy Anderson <clubanderson@users.noreply.github.com>
…g a live turn (#12336) The governor re-kicks an agent whose previous turn is still streaming; each attempt waits out the prompt timeout and is counted undeliverable, and three inside one long review turn filed #12268 — an issue that cleared itself when the turn ended. Gate the self-report on the agent's transcript having been silent for busy_no_activity_threshold, the same bar busyCondition applies, and carry the silence in the report message. Fixes #12268 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
* 🐛 automerge: skip trusted-author tier for trusted bots Hive-Run: #12189 Hive-Plan: issue-12189 Hive-Spec: #12189 Signed-off-by: Karibhou <157208370+Karibhou@users.noreply.github.com> * 🐛 automerge: hand trusted bots to the self-authored lane only while it runs Replace the prefilter sentinel with an explicit AutoMergeSweepOptions.SelfAuthoredLaneActive flag. When the self-authored sweep is running, the trusted-author tier logs reason=trusted-bot-lane and counts the PR as Skipped so Seen stays consistent; when ACMM gates that lane off, trusted bots are evaluated by role as before so a bot granted RequireRole can still merge. prefilterTrustedAuthorPR returns genuine skip reasons only, so the refetch path needs no sentinel knowledge. Hive-Fix-Attempt: 1/6 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> * 🐛 automerge: wire TrustedBotAuthors into the run-loop sweep runAutoMergeSweepIfDue passed SelfAuthoredLaneActive but never set Options.TrustedBotAuthors, so sweepLaneForAuthor could not recognise allow-listed bots on that path and the trusted-author tier still logged untrusted-author-role for them every main-loop tick. Set the hook inside the cfg != nil block, add a wiring test, and move the stranded isHeld doc comment back onto its function. Hive-Fix-Attempt: 2/6 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> --------- Signed-off-by: Karibhou <157208370+Karibhou@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* 🔒 fix(hub): keep spoke compliance summary owner/admin-only Compliance profile and posture check results are admin-gated on the hub rollup endpoint (/api/hub/compliance) and must not be exposed to unauthenticated callers on /api/registry or non-owner members on /api/saas/my-hives. Strip RegistryEntry.Compliance in handleRegistry for public registry responses and in buildMyHivesResponse for users who are not owners or admins. The stored registry entry and disk persistence remain intact. Fixes #12264 Hive-Run: #12264 Hive-Plan: compliance-exposure-fix Hive-Spec: compliance-exposure#strip-non-admin Signed-off-by: repires <repires@users.noreply.github.com> * 🔒 fix(hub): fold compliance scrub into my-hives row loop, document visibility Review follow-ups for #12290: - Move the Compliance=nil strip in buildMyHivesResponse into the existing per-row gating loop beside the Leaderboard scrub; nothing downstream reads Compliance, so a second pass after attachQuadrants was redundant. - fleet-health.md: state that the Compliance column is owner/admin-only and omitted from /api/registry and other members' /api/saas/my-hives rows. Hive-Fix-Attempt: 1/6 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> * docs(fleet-health): drop description of nonexistent hub Compliance column The hub UI has no Compliance column; keep only the API visibility note. Hive-Fix-Attempt: 2/6 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> --------- Signed-off-by: repires <repires@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: repires <repires@users.noreply.github.com> Co-authored-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…view (#12322) * feat(hub): quadrant card drill-down into owner-only evidence view Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> Signed-off-by: Andrew Anderson <andy@clubanderson.com> * fix(hub): class-driven evidence modal, fallback link, criteria-table disclosure Review follow-ups for #12322: - Move the #evidence-modal inline styles into .evidence-modal* classes (overlay uses var(--overlay-scrim)) and tokenise the .evidence-note / .evidence-msg font sizes and .evidence-table padding, so the hub static pages stay at the TestStyleRatchet baselines (945 style= / 448 colours / 426 font-size / 164 padding). - When no quadrant axis is scored the card is not drawn, which left admins with no path into the evidence view; render an admin-only one-line fallback link in its place (members still get nothing). - Disclose in-panel, in the changelog fragment and in the api-reference row that the per-axis criteria table from #12117 is not emitted by /api/hub/evidence yet and is tracked under #12080. Hive-Fix-Attempt: 1/6 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> Signed-off-by: Andrew Anderson <andy@clubanderson.com> * fix(hub): keep fleet quadrant header self-suppressing when nothing scored Signed-off-by: scanner <scanner@hive.kubestellar.io> Signed-off-by: Andrew Anderson <andy@clubanderson.com> * 🧪 hub: mount the evidence fallback link through fleetQuadrantFallbackHTML and test the pair The previous fix kept fleetQuadrantHeaderHTML self-suppressing (as TestFleetQuadrantHeaderWiring pins) by inlining the fallback ternary at the mount site, but left TestFleetQuadrantFallbackLinkWhenNothingScored calling the header alone. Name the rule (fallback appears exactly when the header suppresses itself), mount it beside the header, and render the pair in the test the way the hives container does. Signed-off-by: Andrew Anderson <andy@clubanderson.com> --------- Signed-off-by: scanner <scanner@hive.kubestellar.io> Signed-off-by: Andrew Anderson <andy@clubanderson.com> Co-authored-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Andrew Anderson <andy@clubanderson.com>
…rted issues (#12343) A [selfreport] issue named the hive but not the repositories or owners it serves, so a maintainer could not tell whether a fleet issue was confined to one project or org. The evidence table gains repos / owners (the hive's project.repos and their distinct owners) and repo / ref for item-scoped classes (advisory_post_failed records the digest's repo via ObserveItem). The hive:selfreport-affected block carries Affected repos (N) and Affected owners (N) as a union across joining hives, re-derived idempotently; the fingerprint is untouched so dedupe is unchanged. governor.fleet_report .include_repos (default true, Settings toggle) turns the attribution off for hives whose watched repos are private. Closes #12338 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
…UTOR in the contributor lane (#12345) The contributor lane rejected NONE/FIRST_TIMER/FIRST_TIME_CONTRIBUTOR authors in its list-time prefilter, before the claim-marker and registry-tier admission paths ran, so relay contributors' green, reviewer-approved PRs skipped every cycle with contributor-lane:author-association (#12195, #12290 on hive's hive). Check the association only after admitContributor and only when neither a verified App-authored hive:claim marker nor an operator-set registry tier vouches for the author; in that case author-association outranks the marker path's reason. An unmarked, unregistered first-timer is still never admitted. Fixes #12344 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
…s PR live, no needs-human re-apply (#12350) trySweepSupersededPR iterated every claim from claimsFromPR, including the weak bare-reference tier, so a PR whose Fixes target was open but whose Part-of parent had been closed by another merged PR was escalated to needs-human as "also claims another issue that is still open" (#12322: Fixes #12117, Part of #12080 closed by #12242). And the label add ran unconditionally once the notice existed, so clearing the label was undone on the next cycle. - supersessionCandidateClaims: closing-keyword claims drive the sweep when any exist; bare references are context. With none, the branch-name heuristic and references stand in as before. - Any open candidate issue means the PR is live: no notice, no label, no close. - ensureSupersessionComment reports whether the notice changed; an identical notice already on the PR does nothing this cycle, so a cleared needs-human sticks until the closer or reason changes. Fixes #12349 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io>
…held vs outcome) (#12348) Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com>
shouldHoldAgentPR now holds an outreach PR only when its target repo is not one the hive manages for the outreach agent (config.AgentOwnsRepo). Same-repo outreach PRs follow the ordinary ACMM level gate and auto-merge on green CI at L6; cross-repo outreach stays held at every level. The hold callback carries the PR's target repo; the outreach prompt, level-hold notice and operator docs describe the new rule. Operator decision by @clubanderson, 2026-10-16. Closes #12352 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Signed-off-by: Andy Anderson <andy@clubanderson.com>
…b.snapshot_url (#12347) * 🐛 dashboard: partial PUT /api/config/governor/hub no longer clears hub.snapshot_url Signed-off-by: scanner <scanner@hive.kubestellar.io> * changelog: fragment for #12347 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: hivecommons-hive[bot] <280983584+hivecommons-hive[bot]@users.noreply.github.com> * changelog: fix fragment bullet and drop duplicate for #12330 Prefix the descriptive fragment with the required '- ' bullet so changelog-fragment-guard passes, and remove the autofix stub fixed-12347.md so the fix compiles into one Unreleased entry. Hive-Fix-Attempt: 1/6 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> --------- Signed-off-by: scanner <scanner@hive.kubestellar.io> Signed-off-by: hivecommons-hive[bot] <280983584+hivecommons-hive[bot]@users.noreply.github.com> Co-authored-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: hivecommons-hive[bot] <280983584+hivecommons-hive[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…t the relay (#12359) good_first_issue.enabled becomes a *bool that defaults on (enabled: false opts out); the sweep runs every 15m and advertises issues from 1h old so it can beat a scanner that claims within minutes. The scorer normalises titles before the epic/RFC/meta check, rejects security-titled issues, and excludes roadmap/meta-tracker items and the hive's own advisory/selfreport/sentinel/ fleet reports. The labelled set is refreshed from every enumeration so a hive agent claiming a hand-labelled issue releases it at once. Closes #12358 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
…ft (#12360) Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Adds the Outcome by author kind evPanel card to the Throughput Evidence sub-panel, drawn from outcomes_by_author_kind in GET /api/evidence/summary: grouped merged / closed / reverted-14d bars per human · agent · bot with n= and a what-this-does-not-show note. Reporting only; nothing reads or alters merge eligibility. Closes #12364 Signed-off-by: Andy Anderson <andy@clubanderson.com>
…ot likely-done (#12384) A merged `Refs #N` / `Part of #N` PR made SyncIssuePRClaimLabels and annotateIssueWithClaim apply hive/likely-done, although Settled() and close-on-merge both treat a reference claim as weak and #11931 requires a closing keyword for likely-done. #12316 landed in the dashboard's Confirm & close band this way while half its work (#12318) was still an open PR. Apply hive/partially-addressed for a merged reference claim, drop a stale likely-done, and stop re-POSTing an already-carried likely-done every tick. Closes #12383 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
* ✨ nous: clarify passive baseline snapshots in Strategy Lab Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com> * 🐛 fix(dashboard): use styled classes and shared timezone helper for snapshot copy Signed-off-by: scanner <scanner@hive.kubestellar.io> --------- Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com>
…12500) * fix(automerge): derive head age from head SHA, not PR updated_at Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com> * fix(automerge): isolate head-age tracker state between sweep tests Add Options.HeadFirstSeen (mirroring ContributorSoak) so engines can use a private tracker; the shared default is unchanged. The sweep test client helper now installs a fresh tracker per engine. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: scanner <scanner@hive.kubestellar.io> --------- Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com>
…als (#12523) Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io>
…arget pills (#12521) The Repo Targets pills toggled .active and aria-pressed, but the only CSS for .active set --pill-c, which the ADR-0018 chip-taxonomy rule for .nous-config-pill never reads. Both states therefore rendered as the same amber outline and operators could not tell which repos Nous would target until after saving. Pills are now native <button type="button"> elements carrying .is-on/.is-off plus aria-pressed; selected renders as a filled amber chip with a leading ✓, excluded as a dimmed outline. Titles say "Click to exclude"/"Click to include" and the counter updates on every toggle. .active is kept in sync as the hook saveNousConfig reads. Closes #12520 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
… dependencies close (#12524) * 🐛 hard-suppress: lift hive-applied blocked when native blockers close ReconcileHiveHardSuppress lifted a hive-applied `blocked` only when a PR cross-referencing the parked issue merged. A child parked on a native GitHub "blocked by" dependency is unblocked by the blocker's own PR, which never mentions the child, so the label stayed forever (#12450/#12451 on #12447/#12448). For `blocked`, also treat the reason as lapsed when the issue has at least one native blocker and none remains open; the note names the closed blockers. Human-applied labels and `hold` are unchanged. Closes #12522 Signed-off-by: Andrew Anderson <andy@clubanderson.com> * changelog: fragment for #12524 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>
…me questions (#12422) Add documentation covering the background-only experiment mode for Hive itself under Nous, answering outcome questions (quality, security, review accuracy, auto-merge latency, outreach, per-agent effectiveness, and user satisfaction), cohorts/flags, guardrails and fast-fail auto-revert, and clarifying the user/background boundary where spoke dashboards and the Experiment Lab exclusively display repository experiments. Hive-Run: #12398 Hive-Plan: issue #12398 Hive-Spec: issue-12398#docs Signed-off-by: repires <repires@users.noreply.github.com> Co-authored-by: repires <repires@users.noreply.github.com>
…constants (#12430) Deduplicate the label colour and description literals for hive/partially-addressed and hive/likely-done across ensure sites in close_on_merge.go, prclaims.go, and contribute_verdict_settle.go by defining PartiallyAddressedLabelColor, PartiallyAddressedLabelDescription, LikelyDoneLabelColor, and LikelyDoneLabelDescription constants in prclaims.go, and registering both labels in escalationIssueLabelDefinitions. Closes #12399 Hive-Run: #12399 Hive-Plan: label-spec-dedup Hive-Spec: labels#partially-addressed Signed-off-by: repires <repires@users.noreply.github.com> Co-authored-by: repires <repires@users.noreply.github.com>
…periment (#12510) Changing the Experiment Lab research question used to leave the baseline untouched, so a brand-new question showed 2688 / 672 "Baseline sufficient". Snapshots are question-independent observations of the hive, but the baseline an experiment is judged against must not include interventions from a previous campaign, and hypotheses/results are question-specific. - pkg/nous: campaign store (campaigns.json) with Ensure/Start/SetQuestion, archived campaigns and QuestionChanged; existing data becomes campaign 1. - pkg/hivestate: Count(dir, since) for windowed snapshot counts. - dashboard: campaign/observation blocks in /api/nous/status, baseline_pct and experiment rows scoped to the active campaign, PUT config/goals rotates the campaign on a changed question, POST /api/nous/campaign/start. - UI: tile and Data Collection bar read from the active campaign, muted "Observation history" line, Previous experiments card, confirm step and Start a new experiment button in the config dialog. - docs, OpenAPI, api-reference, changelog fragment, import ratchet +1. Closes #12501 Signed-off-by: Andy Anderson <andy@clubanderson.com>
Signed-off-by: Andy Anderson <andy@clubanderson.com> # Conflicts: # .github/workflows/discord-syntax.yml # bin/contributor-relay.js # src/cmd/hive/main.go # src/docs/api-reference.md # src/docs/dashboard.md # src/docs/documentation-map.md # src/docs/operator-reference.md # src/docs/review-swarm.md # src/docs/running-at-level-6.md # src/docs/scale-envelope.md # src/docs/strategy-lab.md # src/internal/testutil/dashboard_import_allowlist.txt # src/pkg/config/config.go # src/pkg/dashboard/api.go # src/pkg/dashboard/api_nous.go # src/pkg/dashboard/bands.go # src/pkg/dashboard/contribute_protocol.go # src/pkg/dashboard/contribute_ws.go # src/pkg/dashboard/deps.go # src/pkg/dashboard/import_count_test.go # src/pkg/dashboard/js_decl_window_test.go # src/pkg/dashboard/static/index.html # src/pkg/dashboard/webstatic/style_ratchet_test.go # src/pkg/github/automerge/automerge_sweep.go # src/pkg/github/client.go # src/pkg/hub/quadrant_axes.go # src/pkg/hub/saas_upgrade.go # src/pkg/hub/server.go
…ratchet - static_index_test: Experiment Lab header assertions follow the #12498 wrap/strip implementation (nousResearchQuestionText/setRq) instead of the retired renderNousResearchQuestion clamp - remove dead selectNousOutputMode left over from v5 (v6 dropped output modes in #11699) - nous_campaign: PUT /api/nous/config/goals persists the panel snapshot (#11694) - claimswire_label_replay_test: use claims.LabelClaimed (stage/020-claimed, #12468) - style ratchet baselines lowered to post-merge counts Signed-off-by: Andy Anderson <andy@clubanderson.com>
Signed-off-by: Andy 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 |
|
Docs map: this PR adds page(s) under
A page missing from the map is one readers do not find. Please add a If the page is indexed from a subdirectory README, or is deliberately |
Changelog fragment in the wrong directoryFragments live in git mv src/changelog.d/added-nous-experiment-progress.md changelog.d/added-nous-experiment-progress.md
git mv src/changelog.d/changed-hub-hero-headlines.md changelog.d/changed-hub-hero-headlines.md
git mv src/changelog.d/fixed-hub-restart-storm-badge-zero.md changelog.d/fixed-hub-restart-storm-badge-zero.md
git mv src/changelog.d/fixed-hub-upgrade-group-behind.md changelog.d/fixed-hub-upgrade-group-behind.md
git mv src/changelog.d/fixed-nous-repo-targets-empty.md changelog.d/fixed-nous-repo-targets-empty.md
git mv src/changelog.d/fixed-token-restart-window-12466.md changelog.d/fixed-token-restart-window-12466.md
git commit -s -m "changelog: move fragment to repo-root changelog.d/"See |
Open PR overlap checkBase branch: Conflicts are checked with every PR merged onto the current tip of
|
d945c72
ℹ️ 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 d945c72. |
|
Thank you for your contribution! Your PR has been merged. We'd love to hear how your experience was: share feedback |
Summary
Forward-merge (
git merge origin/v5 --no-ff -s recursive -X patience) of v5 into v6 — 82 v5 commits (merge base00aaf865da), landed as a true merge commit plus two follow-up commits. History preserved so the next top-up merges cleanly. Same procedure as #12254.v5 PRs merged
#12168 #12195 #12290 #12308 #12313 #12314 #12315 #12322 #12323 #12327 #12328 #12331 #12336 #12337 #12343 #12345 #12346 #12347 #12348 #12350 #12351 #12353 #12354 #12355 #12359 #12360 #12382 #12384 #12385 #12386 #12388 #12389 #12390 #12393 #12395 #12400 #12409 #12411 #12414 #12416 #12422 #12424 #12426 #12430 #12433 #12434 #12440 #12441 #12444 #12455 #12465 #12467 #12468 #12469 #12472 #12474 #12475 #12476 #12477 #12480 #12484 #12485 #12486 #12487 #12493 #12497 #12498 #12500 #12504 #12506 #12507 #12510 #12511 #12514 #12518 #12521 #12523 #12524
Highlights verified present after merge
morphInnerHtmlfor cost/debug/audit panels (+pane_poll_section_jump_test.go); 🐛 dashboard: show the full Experiment Lab research question in the header #12498 research-question wrap/strip (nous_research_question_ui_test.go); 🐛 dashboard: show selected vs excluded state on Experiment Lab repo target pills #12521 nous repo target pillsis-on/is-off; 📖 dashboard: refresh the FAQ section #12441 FAQ groups; ✨ evidence card: 24h/7d/30d/custom windows and plain-language panel explainers #12416/✨ hub evidence: 24h/7d/30d/custom windows and plain-language explainers #12424 evidence windows + plain-language explainers; 🐛 evidence: window by PR open time and fold live + backfilled bundles per PR #12514 evidence summary folds all bundles per PR, closed counting, 3×366d cap,available_windows/api/hub/evidence/report; ✨ hub: Fleet quadrant — evidence-fed axes, calibrated scaling, per-axis explanations #12469quadrant_curve.gostage/020-claimedreplacesclaimed), 🐛 stagelabels: one enforcer re-reads before writing so an item carries exactly one stage label #12526-era enforcerinclude_repos, contributemax_parallel_fixes/min_focus_window,hub.snapshot_urlvalidation, named defaults)Conflicts resolved (28 files)
.github/workflows/discord-syntax.ymlbin/contributor-relay.jsRELAY_CAPABILITIESunion (quota_preflight_v1,standby_v1,run-stage,fix_pr_interrupt_v1) + v5 fix-pr constantssrc/cmd/hive/main.goReviewVerdictHold(v6) andStageLabelPolicy/ContributorNudge(v5) wiredsrc/pkg/config/config.goagent_config.go,review_config.go(Shadow),governor_config.go(stage labels, contributor nudge, fleet-reportIncludeRepos),hub_config.go(contribute parallel-fixes/focus-window, already-done consts),dashboard_config.go(ValidateSnapshotURL),defaults.go(namedDefault*consts)src/pkg/github/client.goReporterConfirmationGateandClaimKindsrc/pkg/github/automerge/automerge_sweep.goreleaseHoldActiveaftercommitGreen,greenFnqueued path) + v5headPushedAthelpersrc/pkg/hub/quadrant_axes.gosrc/pkg/hub/server.go,saas_upgrade.goUpgradeDrainUntilandSpokeReportedUpgradingsrc/pkg/dashboard/api.go,api_nous.go,nous_research_question.go,deps.goresearchQuestionLockedwrapsnormalizeNousResearchQuestionsrc/pkg/dashboard/bands.goissueStageCoveredadded to done testsrc/pkg/dashboard/contribute_protocol.go,contribute_ws.gosrc/pkg/dashboard/import_count_test.go,js_decl_window_test.gosrc/pkg/dashboard/static/index.htmlruns-sectionsummary; v5 nous progress/campaign/nousResearchQuestionText/setRq(v6renderNousResearchQuestionclamp removed); v6REPO_ISSUE_BAND_DEFAULTS; v5 repo pills; self-upgrade handler portedstatus === 'current'into v6 promise chainsrc/internal/testutil/dashboard_import_allowlist.txt,settings_parity_allowlist.txtsrc/docs/{dashboard,documentation-map,operator-reference,review-swarm,running-at-level-6,scale-envelope,strategy-lab,api-reference}.mdexperiment-lab.md(v6 naming);api-reference.mdtables merged by (method,path) preferring v6 rows;check-api-reference-citations.sh --fix(102 citations)webstatic/style_ratchet_test.goFollow-up commits: v6
static_index_testExperiment Lab header assertions follow #12498; deadselectNousOutputModeremoved;PUT /api/nous/config/goalspersists panel snapshot (#11694);claimswire_label_replay_testusesclaims.LabelClaimed(#12468);fleet-health.md/fleet-report.mdtime-series links →experiment-lab.md.Verification
Coverage vs
PKG_THRESHOLD(all 83 changed packages ≥ floor): dashboard 86.9 (≥84), webstatic 92.9 (≥88), github 90.0 (≥88), automerge 90.2 (≥88), hub 88.7 (≥87), agent 89.1 (≥88), config 90.3, tui 93.9 / tui/panes 91.0 / tui/client 94.1 (≥90), evidence 96.4, stagelabels 95.8, claims 94.0, nous 94.3, review 95.5 (≥80), scheduler 93.8, spektacular 91.2, cmd/hive 75.7 (≥42).TestStyleRatchet,TestSleepRatchet,TestSettingsDialogReferencesEveryHiveYAMLLeaf,TestEvidenceModalNoIssueNumbers,TestRelayProtocolVersionMatchesHub, import-count test pass.Local-only failures (identical on pristine
origin/v6, macOS tmux/git env):TestPollTmuxOutputForAgent_WiresThrashBreaker,TestApplySessionEnv_*,TestBinaryExec_Deadline,TestGitRetagger_*;contributor-relay.test.js80 env failures on both base and merge.