Repository navigation
🌱 top-up: forward-merge v5 into v6 (2026-10-15) - #12254
Conversation
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>
* 🌱 images: bump claude 2.1.296 -> 2.1.300 Automated pin bump (#8419). Digests recomputed from the downloaded release artifacts by src/scripts/cli-pin-bump.sh: VERSION=2.1.300 Signed-off-by: hive-release[bot] <hive-release@hive.kubestellar.io> Signed-off-by: clubanderson <407614+clubanderson@users.noreply.github.com> * changelog: fragment for #11987 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: hive-release[bot] <hive-release@hive.kubestellar.io> Signed-off-by: clubanderson <407614+clubanderson@users.noreply.github.com> Co-authored-by: hive-release[bot] <hive-release@hive.kubestellar.io> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Automated release commit. Compiles changelog.d/ fragments and moves the CHANGELOG.md Unreleased section into a dated v5.175.0 entry. See src/docs/releases.md. Signed-off-by: hive-release-bot <actions@github.com>
release: v5.175.0
…l clock at load (#11997) loadLastGood ran from newCLIModelCache with time.Now before a caller could install its clock and dropped entries older than cliModelLastGoodTTL. The TTL is already enforced in lastGoodFor with c.clock() on every read, so the load-time filter was redundant and made the dashboard last-good tests time-dependent: they pinned 2026-10-14 and failed deterministically on v5 once the wall clock passed the 24h window. Fixes #11994 Fixes #11995 Fixes #11996 Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io>
Widen the Knowledge Sources dialog to min(1480px, 94vw) x min(92vh, 1100px) with the body as the single scroller, move its inline layout recipes into .kb-sources-* stylesheet classes (section cards, explainer, form rhythm, nowrap action buttons), and fold the two-column grid to one column on the <=768px and landscape phone tiers. Lowers the style ratchet baselines. Signed-off-by: Andrew Anderson <andy@clubanderson.com>
… hub vs spoke (#12001) Signed-off-by: Andrew Anderson <andy@clubanderson.com>
… keys (#11993) * feat(dashboard): expose issues/jev/duplicate_sweep/policies/turn settings keys 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(dashboard): move new settings subsection styling to token classes The style ratchet (TestStyleRatchet) counts inline style= attributes and raw px/rem font-size/padding values; the new settings subsections added 13 of them. Replace with .settings-subsection* classes built on tokens.css values. Signed-off-by: scanner <scanner@hive.kubestellar.io> * fix(dashboard): apply last-good TTL at read time, not at cache construction loadLastGood filtered persisted catalogs by cliModelLastGoodTTL using the real clock during newCLIModelCache(), before callers could pin c.now. The cache tests pin a fixed 2026-10-14 date, so once wall time passed that fixture plus 24h, TestCLIModelCache_LastGoodPersistsAcrossRestart and TestQueryCLIModelsForBoot_ServesPersistedLastGood began failing on every run. lastGoodFor already enforces the TTL with the cache clock, so drop the redundant eager filter. 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>
…n the PR journey (#12009) Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io>
… issues from stale in-progress (#12012) 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>
…PRs when CI is green (#12011) PRs that hive's own contributor lane produced (linked issue carries this hive's App-authored hive:claim kind=contributor marker for the PR author) were skipped by every auto-merge tier (untrusted-author-role / not-app-authored) and waited forever for a human /lgtm + /approve. Add a default-on contributor-lane tier that merges such PRs once required CI is green on the current head for a soak window (default 120m), the reviewer verdict approves when a reviewer agent is configured, Sentinel has no blocking finding, the reporter-trust gate has not held the PR, and no exclude label is present. Skips log distinct contributor-lane:* reasons. Config: auto_merge.contributor_lane.{enabled,soak_minutes, require_reviewer_verdict,repos,exclude_labels} with Settings → Features controls, dashboard GET/PUT /api/config/auto-merge support, docs, tests. Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
…2016) A browser with no persisted dashboard state now starts Throughput, Tokens, Cost, Advisory, Knowledge, Contributors, Inception, ACMM Eval, Diagnostics, Audit Log, Agent Logs, Strategy Lab and FAQ collapsed; Overview, Governor, Projects, Review, Approvals, Agents and Agent activity stay expanded. A one-time marker (hive.dashboard.collapseDefaults) records legacy browsers so existing operators keep the all-expanded default. Explicit expands persist as '0' and win over the default; snapshots, import/export and reset round-trip them. Adds Expand all / Collapse all to the Layout menu. Fixes #12014 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
…#12021) 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>
…once (#12018) The .prt-metric wrapper carried the full tip as a native title= while the ⓘ inside it rendered the same text in the styled .config-tooltip, so the browser tooltip and the portal tooltip opened together. Drop the wrapper title (the ⓘ keeps the text and its aria-label) and add a webstatic guard that scans index.html markup and template literals for any .config-tooltip trigger that also inherits a non-empty native title=. Fixes #12017 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
) * 📖 docs: spell out ACMM (AI Codebase Maturity Model) on first use Signed-off-by: Andrew Anderson <andy@clubanderson.com> * 📖 docs: define ACMM at the top of the policy matrix page Signed-off-by: Andrew Anderson <andy@clubanderson.com> --------- Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
…hows the PR icon (#11890) * ✨ Link non-default-branch fix PRs to their issues via addCloseIssueReferences GitHub only derives closingIssuesReferences (the Development sidebar and the issue-list PR icon) from closing keywords on default-branch PRs, so v6 fixes were invisible in the issue list while v5 is the default. Call GitHub's addCloseIssueReferences mutation for every same-repo Fixes #N reference when CreatePR opens a PR against a non-default base, and for strong open claims in SyncIssuePRClaimLabels so PRs opened outside the relay are linked too. Pairs are memoised per process. Fixes #11888 Signed-off-by: Andrew Anderson <andy@clubanderson.com> * changelog: fragment for #11890 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> * 📖 Shift scale-envelope client.go citation for the closingLinks field Signed-off-by: Andrew Anderson <andy@clubanderson.com> * ✨ Rename hive/covered-by-pr to 🐝 covered by PR with in-place label migration Readers accept both spellings during the transition; the label ensure path renames the legacy label via PATCH new_name on first use so existing issues keep it without per-issue writes, and falls back to creating the new label if the rename is refused. Consolidate changelog fragments under the root changelog.d/ the guard reads. Refs #11888 Signed-off-by: Andrew Anderson <andy@clubanderson.com> * 📖 Shift scale-envelope citation for the coveredByPRLabel field Signed-off-by: Andrew Anderson <andy@clubanderson.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> Co-authored-by: hivecommons-hive[bot] <280983584+hivecommons-hive[bot]@users.noreply.github.com>
The Features tab had grown into one flat list of ~30 toggle/field blocks with inconsistent heading treatment, so operators could not find the Autonomy policy or contributor-lane controls that recently landed there. Group every control into eight headed .config-section.features-section groups (Auto-merge, Review gate, Autonomy & ACMM, Work intake & issue lifecycle, Agents & tooling, Quality loops & release health, Integrations & observability, Experimental), each with a sticky h3, a one-line description and a stable id/data-settings-section anchor; add a chip table of contents that scrolls #config-body (the dialog's scroll container) to a section; rename the Settings search index sections to match the headings; move the inline wrapper styles into classes and lower the style ratchet baselines accordingly. No control, yaml key, data-action, data-key or element id changed. Signed-off-by: Andrew Anderson <andy@clubanderson.com>
* Revert "🐛 fix hosted spoke vanity ingress TLS (#12024)" This reverts commit cb4f453. Signed-off-by: Andrew Anderson <andy@clubanderson.com> * 🐛 revert legacy hosted-spoke TLS issuance Signed-off-by: Andrew Anderson <andy@clubanderson.com> --------- Signed-off-by: Andrew Anderson <andy@clubanderson.com>
… tab from the DOM (#12035) * 🐛 Settings search: scroll to and highlight the exact setting Clicking a result or "Open tab" switched tabs and left the user at the top of a long tab; hits in the hand-maintained index could also point at a tab that has no such control (dashboard.strategy_lab under Features). - Result rows and Open tab resolve the target tab from where the key is rendered, scroll the row into view inside #config-body, flash it (.cfg-row-flash, reduced-motion aware) and focus its control. - Enter in the search box opens the first result. - Every setting row carries data-setting-key; rows that lacked a yaml hint got explicit anchors (logging, watchdog, otel, ioscan, retro, rotation, thresholds, SLA targets, acmm_level). - Fixed/removed drifted index entries; node-backed webstatic tests audit every entry against the rendered tabs. Signed-off-by: Andrew Anderson <andy@clubanderson.com> * 🐛 Settings search: instant scroll and re-centre after the tab settles Smooth-scrolling a ~10k px dialog body landed short when sections above the row grew from their own fetches mid-scroll (Features tab). Scroll instantly and re-centre once if the row left the viewport. Signed-off-by: Andrew Anderson <andy@clubanderson.com> * changelog: fragment for #12035 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> * 🌱 changelog: fragment as a '- ' entry bullet Signed-off-by: Andrew Anderson <andy@clubanderson.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>
… checks never run (#12050) 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>
…ys (parity batch 3) (#12046) * feat(dashboard): expose settings parity batch 3 (data, deployment, evidence, forge, mint, …) Refs #11854 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(dashboard): drop pkg/mint and pkg/sessionprune imports; lower padding ratchet pkg/dashboard only needed three constants from pkg/mint and pkg/sessionprune, which tripped TestDashboardImportRatchet and the internal import-count ratchet (47 > 45). Mirror them as second/day-valued constants in pkg/config (already a dashboard dependency) and pin parity with tests in the owning packages. Also lower the hub static pages raw-padding baseline to 164 for TestStyleRatchet. Signed-off-by: scanner <scanner@hive.kubestellar.io> * fix(dashboard): use mt-4 utility instead of inline style for min_head_age field Keeps the operator index.html style= ratchet at its baseline of 1507. 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>
…to_start (#12053) 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>
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
…th the litellm gateway (#12057) 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: MikeSpreitzer <14296719+MikeSpreitzer@users.noreply.github.com>
Every gate in triggerAutoUpgrades that turned away a daily/weekly hive while its window was open logged at Debug only, so a stable-channel hive that missed its 13:00 ET window kept showing the previous manual upgrade with no reason. Persist the hold reason on the hive record, relay it in the heartbeat upgrade policy, and render it in the spoke auto-update status and version menu. Refs #11196 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: MikeSpreitzer <14296719+MikeSpreitzer@users.noreply.github.com>
…kes send node health (#12059) The hub sends its recorded cluster_id in the heartbeat response to spokes that report none; the spoke adopts it only when hub.cluster_id is empty, persists it to hive.yaml, and attaches cluster_health from the next beat. Spokes report node_rbac (ok|forbidden) in cluster_health, and the hub replaces the generic push-reported note with an RBAC-missing message linking the runbook. 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>
… workload (#12215) Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io>
* feat(dashboard): expose agent_sandbox scalar settings in Settings dialog Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com> * fix(dashboard): use settings-subsection classes for Advanced sandbox details to keep the style ratchet flat 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>
…iew.pending_ttl, review.max_redispatch) (#12217) * 🐛 review: expire pending reviews with no verdict and re-dispatch (review.pending_ttl, review.max_redispatch) A reviewer kick turn that dies (model timeout, proxy read timeout, pod restart) posts no verdict, and the head's pending entries in review-dispatch-state.json had no expiry, so pendingMissingPerspectives saw every perspective as covered forever. #12045 and #12025 sat for hours at review queue position 1 with CI green and the contributor lane stuck at no-verdict. PlanDispatch now expires pending entries older than review.pending_ttl (default 45m) whose head still has no verdict and re-dispatches them, logging 'review pending expired'. Expiries are counted per head in state.redispatches; at review.max_redispatch (default 3) the planner stops re-kicking and records a review-dispatch-exhausted requires_human hold. Fresh entries and a verdict for the head are untouched; the same expiry releases a dead revisit. /api/review/queue items gain pending_since and redispatch_count and a 'review dispatched Xm ago, no verdict yet' reason. Signed-off-by: Andrew Anderson <andy@clubanderson.com> * 🐛 review: allowlist review.pending_ttl / review.max_redispatch in settings parity (pending #11854) Signed-off-by: Andrew Anderson <andy@clubanderson.com> --------- Signed-off-by: Andrew Anderson <andy@clubanderson.com>
* ✨ intent: add intent.shadow to record would_have_blocked Signed-off-by: scanner <scanner@hive.kubestellar.io> * fix(dashboard): drop inline style on intent.shadow toggle to keep the style ratchet flat Signed-off-by: scanner <scanner@hive.kubestellar.io> --------- Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io>
Expose runs.checkpoints, runs.wait_*, runs.triage scalars, runs.spektacular.recheck scalars and the runs.external Flue/OMP/vibe-kanban settings in Settings -> Features -> Experimental, and drop the 25 keys from the settings parity allow-list. Refs #11854 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> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… skipped by design (#12218) * 🐛 fix(automerge): do not block trusted-bot heads on required contexts skipped by design Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com> * test(automerge): assert not-app-authored for a human author in the skipped-by-design case A human author is rejected by trySweepSelfAuthoredPR before the required-context walk, so the "author not a trusted bot" subtest never saw a required-check- reason. Exercise the lane guard with the App's own login instead, and assert the human author's not-app-authored verdict explicitly. 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>
… on PATH (#12222) On v5 HEAD, the test (dashboard shuffle 1/2) shard fails when a runner pod has no node on PATH. TestRenderAgentsIncludesConfiguredDisabledCards calls exec.Command("node", ...) unguarded and t.Fatalf()s on a missing node. Every sibling node-driven dashboard test already degrades gracefully with t.Skip/t.Log when node is absent (acmm_waiver_ui_test.go, sidebar_version_panel_test.go, modal_escape_release_test.go, agent_cadence_legacy_test.go). Guard the test with exec.LookPath("node") before executing node. When node is missing, log and skip only the node fixture block. The structural renderAgents snippet assertions still run and validate without node present. 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>
…missing perspectives (#12224) An aggregate whose delivered perspectives all approve but which is short of the perspectives the head is owed aggregated to requires_human with "review perspectives did not unanimously approve". PlanDispatch then parked the head on a human hold and never consulted the missing- perspective path, so a reviewer kick that died after its peers reported left the PR unable to self-merge (#12045 head 7e027fc). Introduce the aggregate-only VerdictIncomplete with a reason naming the missing perspectives. The planner treats it as under-asked: delivered perspectives come off the pending list, only the undelivered ones expire and re-dispatch, under the existing pending_ttl / max_redispatch budget. Pipeline stage and review queue render it as still reviewing. Fixes #12223 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
…elay so hivectl hives use reloads it (#12226) Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: Danathar <6772335+Danathar@users.noreply.github.com>
…12170) * 🐛 dashboard: Settings sticky section bar flush under search row, taller dialog, section rail The Features tab's sticky section heading stuck ~20px below the search row with rows scrolling through the gap: .config-body (the scroll container) had padding-top, and Chromium measures a sticky child's top from the content edge, so the heading's negative margin-top could not pull it up. The top inset is now a ::before spacer that scrolls with the content, the heading has no vertical margin and an opaque background. The dialog fills the viewport minus the modal gutter (capped at 1200px) and is wider to make room for a section rail left of the body. The rail is built from the rendered .config-section > h3 headings by a MutationObserver, so it tracks every tab, async panel fill-in and the search-results swap; clicking scrolls #config-body, the section in view carries aria-current, and a container query collapses it under 900px. Fixes #12169 Signed-off-by: Andrew Anderson <andy@clubanderson.com> * 🌱 dashboard: pin settings modal tests to the taller 1320px dialog TestAppearanceThemeHoverCannotResizeSettingsModal and TestTabbedModalShellsStayFixedSize11268 asserted the literal old box (`width: 1200px`, `height: min(84vh, 760px)`). Their intent is that the settings modal is a fixed, viewport-bounded, hover-independent flex box - not that it is exactly 1200x760. This branch intentionally grows the dialog to 1320px wide and `min(calc(100vh - 2*gutter), var(--config-modal-max-h))` (1200px cap) to fit the new left config rail, so the pinned literals are updated to the new values. The hover-independence checks (contain: layout, pinned font/spacing/radius tokens, display:flex/overflow:hidden, body flex/min-height/overflow) are unchanged. Signed-off-by: Andrew Anderson <andy@clubanderson.com> --------- Signed-off-by: Andrew Anderson <andy@clubanderson.com>
…ries (#12228) * ✨ proxy: persist attempted vs blocked write counters with a weekly series Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com> * docs(openapi): document GET /api/evidence/write-counters TestOpenAPISpecCoversEveryRegisteredRoute flagged the new route as registered but undocumented. 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>
The Tagged Release 'decide' job on v5 rejects changelog.d/fixed-v5-admin-mcp-doc-links.md because a fragment must start with a '- ' entry bullet. Signed-off-by: scanner <scanner@hive.kubestellar.io> Co-authored-by: scanner <scanner@hive.kubestellar.io>
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
…ed label, api-reference citations 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 |
|
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 |
Open PR overlap checkBase branch: Conflicts are checked with every PR merged onto the current tip of
|
… x/sys entry, scale-envelope citation Signed-off-by: Andrew Anderson <andy@clubanderson.com>
8ef3edc
ℹ️ 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 8ef3edc. |
|
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 — 106 v5 commits (merge basebaf238280), landed as a true merge commit plus one follow-up commit (108 commits ahead oforigin/v6). History preserved so the next top-up merges cleanly.Notable v5 changes brought over
Docs
Token efficiency
elideStuffed/addTaskMCPPointer,governorWorkSourceRulemerged into all quality templates, stuffed-kick elision, MCP pointer)Dashboard
FEATURES_SECTIONSrefactor, ✨ dashboard: collapse non-critical cards by default for new hives #12016, 🌱 dashboard: unique, section-specific sidebar nav icons #12058, 🐝 covered by PR glyph is inconsistent; reference claims from branch-name PRs get a GitHub closing link #12144 linked-PR glyph, ✨ dashboard: faceted label filter with saved filters, text terms, sidebar pins and a default "Needs human" preset in project cards #12172/✨ dashboard: faceted label filter with saved filters and Needs human preset #12181, ✨ Hive-curated good first issues to attract contributors with their own coding agents #12186#9945 fixes
Settings parity
Other
🐝 covered by PRlabel rename, 🐛 agent: thrash breaker ignores displayed blocked-action markers #12021 thrash-breaker displayed-marker filter, contributor lane (gh103/gh104), retro validationConflicts resolved (24 files)
NOTICE,README.md.github/workflows/v2-ci.ymlsrc/cmd/hive/main.go,src/pkg/config/*src/pkg/github/client.go,commit_ci.go,automerge_sweep.gosrc/pkg/scheduler/kickmessage.go,kick_layout.goassembleKick+ v5elideStuffed/addTaskMCPPointer;governorWorkSourceRulemerged text ported into all 10 quality templatessrc/pkg/dashboard/bands.go,overview_status.go, 9102 testsrc/pkg/dashboard/api_nous.go,nous_research_question.goexperiment_lab)src/pkg/dashboard/api_governor_features.gosrc/pkg/dashboard/settings_parity_allowlist.txtsrc/pkg/dashboard/static/index.htmlrenderGovFeatures(sections refactor) and re-ported v6 additions (Persona learning, Nous/Experiment Lab subsection, Advisor Lane, ACMM gating on checkpoint toggle);renderNousConfig→ repo-only; search index union (v6 Experiment Lab naming); v6's collidinggh103handler renumbered togh105; duplicatemodeColorsremovedsrc/docs/{hive.yaml.example,dashboard-sections.md,experiment-lab.md,scale-envelope.md,api-reference.md}check-api-reference-citations.sh --fixrunsrc/pkg/dashboard/pr_throughput_ui_test.go,webstatic/style_ratchet_test.goFollow-up commit aligns v6-only tests with v5 contracts (repo-only lab scope, features-section search keys, hf* label-filter harness stubs,
🐝 covered by PRadded to reserved exact labels,runs-sectiondefault-collapsed,nous.dispatchersetting key).Verification
Coverage vs
PKG_THRESHOLD: dashboard 86.6 (≥84), webstatic 92.9 (≥88), github 90.4 (≥88), automerge 90.5 (≥88), scheduler 93.8, config 90.9, policies 91.5, retro 91.0 (≥90), agent 89.1 (≥88), cmd/hive 75.2 (≥42).TestStyleRatchet,TestSettingsDialogReferencesEveryHiveYAMLLeaf,TestSleepRatchetpass.Local-only failures (identical on pristine
origin/v5/origin/v6, macOS tmux/TZ env):TestPollTmuxOutputForAgent_WiresThrashBreaker,TestApplySessionEnv_Injection…,TestAgentClosedFindingIsNotReportedResolved,TestGitRetagger_*.