Repository navigation
✨ selfreport: carry the affected repositories and owners in self-reported issues - #12343
Conversation
…rted issues 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>
|
[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
|
de6ebf1
ℹ️ Sentinel notice — informational; author is trusted (owner), merge is not blockedHive flagged this PR (author @clubanderson, head
Hive did not add the |
|
Another agent tried to open a PR from |
|
merged by Hive trusted-author auto-merge: author @clubanderson holds role owner and GitHub permission admin on repo; CI green at de6ebf1. |
|
Thank you for your contribution! Your PR has been merged. We'd love to hear how your experience was: share feedback |
Closes #12338
What
Self-reported issues now say which repositories and owners are affected, not just which hives.
Evidence table (new rows,
runtime-errorreports):repos/ownerscome fromproject.repos(normalised toowner/name, deduped, sorted, capped at 20 in the table with+N more);repo/refare the triggering item when the class carries one —advisory_post_failednow records the digest's repo via the newfleetreport.ObserveItem. Unset fields render—.Affected block — union across joining hives, idempotent:
UpdateAffectedBlockWithReposmerges the joining hive'sReport.Reposinto the parsed union; owners are always re-derived, never parsed back. A re-report with nothing new returnschanged=false(no body edit); a known hive bringing a new repo edits only the block.Fingerprint unchanged —
RuntimeFingerprintis still class + normalised message + version;TestRuntimeFingerprintIgnoreReposAndItempins that two hives with different repos/items land on one issue.Privacy — the report repo is public and
hive.yamldoes not record repo visibility, so there is no per-repo filter to honour. Newgovernor.fleet_report.include_repos(defaulttrue; Settings → Governor → Self-Reported Issues toggle,PUT /api/config/governor/fleet-report {"include_repos":false}) turns the attribution off entirely:Observation.Reposis nil, table cells render—, the hive's joins add nothing to the union. Documented infleet-report.md(new "Repositories and owners" section) andoperator-reference.md.Tests
pkg/fleetreport: body rendering with/without repos, union merge + idempotence + legacy block shape, fingerprint stability,ObserveItem→ evidence, repo normalisation rejects token-shaped input.pkg/dashboard:include_reposGET default / PUT persistence gatesFleetReportRepos(); settings-parity passes with the real toggle (no allowlist entry).Not touched: the hub relay join path (it only comments; it forwards new report bodies, which already carry the block).