Skip to content

🐛 Approve toast: outcome in plain words, who merges next, sentinel only while open - #15213

Merged
clubanderson merged 1 commit into
v5from
fix/approve-toast-wording
Oct 29, 2026
Merged

clubanderson merged 1 commit into
v5from
fix/approve-toast-wording

Conversation

@clubanderson

Copy link
Copy Markdown
Member

Fixes #15212.

After the owner clicked Approve on hivecommons/dibs#510 (a sentinel-alert PR) the toast read "approved /lgtm + /approve posted (released: approval-recorded, sentinel-label). ⚠️ … a maintainer must review before merge. The merge gate takes it from here; the dashboard merges nothing." — "that's a confusing response".

What changes

  • Headline is the outcome: Approved #510 as @clubanderson · sentinel alert cleared by your review. (· sentinel alert still open when the label could not come off).
  • Next is the concrete step and who merges:
    • lane merges: Hive's merge sweep merges it on its next pass once CI is green and the head has soaked (≈30 min). — the soak figure is the contributor lane's soak when the approval admitted the head, else the sweep's minimum head age;
    • human-merge lane (stage/090): Hive cannot merge this one (trust or role blocks it): merge it on GitHub yourself, or use Approve & merge as maintainer.;
    • sentinel still open: The sentinel-alert label is still on the PR: a maintainer must review the flagged head and take the label off on GitHub before hive's merge sweep will touch it.
  • ⚠ sentinel paragraph only while the alert is still open after the action: the result carries sentinel_cleared / sentinel_open; the toast drops the row's preface when cleared, keeps it when open, and keeps legacy behaviour (warn from the row) for results without either flag.
  • What was posted is a muted secondary line (Posted: /lgtm posted · /approve posted · sentinel-alert label removed), rendered under Next with the new .ham-result-posted rule.
  • Prow-managed repos (PR wears approved / size/* / do-not-merge/* / ok-to-test): the relayed /approve is from hive's account, which is not in OWNERS, so Prow says "NOT APPROVED". The toast says Approval of #510 recorded in hive as @user. and Next starts with Prow approval still needs an OWNERS reviewer: …. PullRequestApprovalEvent.ProwManaged is the new signal.
  • The delegated "Let hive decide" notes and the queue-merge result drop "the merge gate takes it from here; the dashboard merges nothing" for the same merge-sweep sentence.

Tests: TestRepoItemApproveResultWording (sentinel released vs still open; lane merges vs human must merge; prow vs non-prow; legacy builder), TestStageTrackerApproveToastSentinelWording (toast element order, warn dropped/kept, Posted line, prow headline), TestProwManagedLabels, and the existing approval test now pins SentinelLabelOpen/ProwManaged false on a cleared non-Prow repo.

…ly while open

The dashboard Approve result on hivecommons/dibs#510 read "approved `/lgtm`
+ `/approve` posted (released: approval-recorded, sentinel-label)" followed
by the ⚠ sentinel paragraph it had just cleared and "the merge gate takes
it from here; the dashboard merges nothing". The owner: that's a confusing
response.

- Headline is the outcome: "Approved #510 as @user · sentinel alert
  cleared by your review".
- Next names the concrete step and who merges: hive's merge sweep (with
  the soak figure), or "merge it on GitHub yourself" on the human-merge
  lane, or what a person must still do when the sentinel alert is still
  open.
- The ⚠ sentinel paragraph shows only while the alert is still open after
  the action (sentinel_cleared / sentinel_open on the result).
- What was posted (/lgtm, /approve, labels removed) is a muted Posted line.
- On Prow-managed repos the relayed /approve from hive's account is not in
  OWNERS ("NOT APPROVED"): the toast says the approval is recorded in hive
  and Prow still needs an OWNERS reviewer.

Signed-off-by: Andrew Anderson <andy@clubanderson.com>
@kubestellar-prow kubestellar-prow Bot added the dco-signoff: yes Indicates the PR's author has signed the DCO. label Oct 29, 2026
@kubestellar-prow

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign clubanderson for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kubestellar-prow kubestellar-prow Bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Oct 29, 2026
@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Open PR overlap check

Base branch: v5

Conflicts are checked with every PR merged onto the current tip of v5, so a PR that only needs a rebase is not reported as conflicting with its siblings.

PR Title Relation Files
#15208 🐛 fix: decidePR answers capability-gap, not adopt-supersede, for heads the App cannot adopt same files src/pkg/dashboard/api_repo_item_decision_test.go
#15122 🐛 Write-back containment: per-kind gate for every unsolicited GitHub write, with backfill guard same files src/pkg/dashboard/static/index.html
#15216 🐛 Sentinel: a dashboard Approve releases the head for good; skip Prow-rejected /lgtm + /approve CONFLICT src/pkg/dashboard/api_repo_item_decision.go
src/pkg/github/pr_decision_operator.go
#15191 🐛 Let hive decide on a ready-for-human-merge PR approves and lets the sweep merge it same files src/pkg/dashboard/api_repo_item_decide_delegated.go
src/pkg/dashboard/static/index.html
#15223 ✨ Soak countdown on every soak pill, with the live timer on hover same files src/pkg/dashboard/static/index.html
#15222 🐛 fix: stage tracker verb — forward transitions no longer read as "fell back to" same files src/pkg/dashboard/static/index.html
#15104 🐛 Activity Monitor: Rebase, then merge as maintainer; fixer owns parked conflicting PRs; dismiss self-inflicted changes_requested CONFLICT src/pkg/dashboard/api_repo_item_decision.go
src/pkg/dashboard/static/index.html
#15221 ✨ Activity Monitor: Accept triage on the label-less reporter-trust hold, leading the row menu same files src/pkg/dashboard/stage_tracker_row_actions_test.go
src/pkg/dashboard/static/index.html
#15219 🐛 fix: preserve human and owner PRs during delegated decisions same files src/pkg/dashboard/api_repo_item_decide_delegated.go
src/pkg/dashboard/api_repo_item_decision_test.go
src/pkg/dashboard/row_action_result.go
src/pkg/dashboard/static/index.html
#15085 ✨ Activity Monitor: Adopt now and Reroute to another clanker for PRs waiting on a contributor's clanker same files src/pkg/dashboard/api_repo_item_decide_delegated.go
src/pkg/dashboard/api_repo_item_decision.go
src/pkg/dashboard/stage_tracker_row_actions_test.go
src/pkg/dashboard/static/index.html
#15186 🐛 Activity Monitor: one coherent post-decision state for Let hive decide rows; 060 reviewed in CI / Review same files src/pkg/dashboard/api_repo_item_decide_delegated.go
src/pkg/dashboard/api_repo_item_decision.go
src/pkg/dashboard/api_repo_item_decision_test.go
src/pkg/dashboard/row_action_result.go
src/pkg/dashboard/stage_tracker_row_actions_test.go
src/pkg/dashboard/static/index.html
src/pkg/github/pr_decision_operator.go
#15134 🐛 Delegated decision on a capability gap: model the blocker, stop the un-park/re-park loop, name the missing App permission same files src/pkg/dashboard/api_repo_item_decide_delegated.go
src/pkg/dashboard/stage_tracker_row_actions_test.go
src/pkg/dashboard/static/index.html
#15206 🐛 Activity Monitor: delegated adopt-supersede reports executing → adopted/could-not-adopt, routes workflow-path to the workflows blocker, re-adoption survives the mutation journal same files src/pkg/dashboard/api_repo_item_decide_delegated.go
src/pkg/dashboard/static/index.html
#14807 ✨ dashboard: stream Job pod logs in the terminal pane for sandbox.runtime: job agents same files src/pkg/dashboard/static/index.html
#15200 🐛 fix: tracker history column wears a history mark, not a ✓ same files src/pkg/dashboard/static/index.html

@hivecommons-hive

Copy link
Copy Markdown
Contributor

@clubanderson is auto-promoted for contributor-lane merging on this PR: the last 5 merged PRs by this author in this hive's repositories have no revert or sentinel-alert evidence. CI, reviewer verdict, diff fences, soak, holds and branch protection still apply.

@hivecommons-hive hivecommons-hive Bot added author/human A person pushed this PR themselves dco All commits are DCO signed-off role/trusted Author is trusted for unattended merge (trusted-author role or registry/claim tier in require_tiers) stage/050-review-pending Review swarm requested; awaiting a verdict for the current head labels Oct 29, 2026
@github-actions github-actions Bot added the conflicts-with-open-pr Open PR has a merge conflict with another open PR label Oct 29, 2026
@clubanderson
clubanderson merged commit ad3cf32 into v5 Oct 29, 2026
84 of 88 checks passed
@kubestellar-prow
kubestellar-prow Bot deleted the fix/approve-toast-wording branch October 29, 2026 01:31
@github-actions

Copy link
Copy Markdown
Contributor

Thank you for your contribution! Your PR has been merged.

We'd love to hear how your experience was: share feedback

clubanderson added a commit that referenced this pull request Oct 29, 2026
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
clubanderson added a commit that referenced this pull request Oct 29, 2026
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
clubanderson added a commit that referenced this pull request Oct 29, 2026
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
clubanderson added a commit that referenced this pull request Oct 29, 2026
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
clubanderson added a commit that referenced this pull request Oct 29, 2026
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
clubanderson added a commit that referenced this pull request Oct 29, 2026
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
clubanderson added a commit that referenced this pull request Oct 29, 2026
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
clubanderson added a commit that referenced this pull request Oct 29, 2026
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
hivecommons-hive Bot pushed a commit that referenced this pull request Oct 29, 2026
…ed conflicting PRs; dismiss self-inflicted changes_requested (#15104)

* 🐛 Activity Monitor: Rebase, then merge as maintainer; autonomous rebase-resolve with loop guard; approve on a dirty PR queues the rebase; dismiss self-inflicted changes_requested

Squashed and rebased onto v5 after #15087 and #15074 landed.

Fixes #15103

Signed-off-by: Andrew Anderson <andy@clubanderson.com>

* test: fix fixtures after the v5 rebase (mock fields, failingEntry rebase fields, import ratchet, window shim)

Signed-off-by: Andrew Anderson <andy@clubanderson.com>

* test: lift pkg/rebasemerge coverage above its floor; drop an ineffectual assignment

Signed-off-by: Andrew Anderson <andy@clubanderson.com>

* test: compare the shared singletons through named values (staticcheck SA4000)

Signed-off-by: Andrew Anderson <andy@clubanderson.com>

* security: rebase-then-merge fails closed on a head the hive did not produce; document the new API shapes

The approval is bound to the head the operator read. A contributor PR whose
head moves after the click now counts as rebased only when GitHub reports
the hive (App bot or pane identity) as the commit's author or committer;
any other head settles the follow-through as failed (foreign-head) with
nothing merged, a note on the PR, and 'Approve the new head & merge' as the
way out. api-reference.md gains the 202 rebase-queued answer, the rebase
response field, and the rebase_merge / rebase row fields.

Signed-off-by: Andrew Anderson <andy@clubanderson.com>

* merge train: hand a dirty member to the fixer's rebase-resolve episode; the exhausted row's rebase-then-merge option goes live

v5 landed the conflict-aware merge train (#15157) with a RebaseResolver hook
reserved for this PR and a duplicate rebaseMergeFollowThroughLabel. The hook
now opens the shared rebase episode (requested_by: merge-train); the
mergeNowWired flag and its disabled reason go, since the option it guarded
is wired here.

Signed-off-by: Andrew Anderson <andy@clubanderson.com>

* test: approve toast wording follows #15213

Signed-off-by: Andrew Anderson <andy@clubanderson.com>

* rebase onto v5: drop duplicate nonEmptyString, lift STAGE_TRACKER_ICONS for the history badge in the rebase-then-merge row test

Signed-off-by: Andrew Anderson <andy@clubanderson.com>

* writeback ratchet: baseline the two operator-solicited comments of the rebase-then-merge follow-through

Signed-off-by: Andrew Anderson <andy@clubanderson.com>

* automerge: superseded question precedes the label block (#15278) while a needs-rebase label on a merely-behind head stays stale

Signed-off-by: Andrew Anderson <andy@clubanderson.com>

---------

Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author/human A person pushed this PR themselves conflicts-with-open-pr Open PR has a merge conflict with another open PR dco All commits are DCO signed-off dco-signoff: yes Indicates the PR's author has signed the DCO. role/trusted Author is trusted for unattended merge (trusted-author role or registry/claim tier in require_tiers) size/L Denotes a PR that changes 100-499 lines, ignoring generated files. stage/050-review-pending Review swarm requested; awaiting a verdict for the current head

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Approve toast is confusing: leads with what was posted, re-warns a cleared sentinel alert, says "the dashboard merges nothing"

1 participant