Dosu LogoDosu Logo
Ask
Join our Discord
Organization avatar
bluefinPublic
Bluefin
Documentsbluefin
workflow
workflow
Type
External
Status
Published
Created
Jun 13, 2026
Updated
Jun 13, 2026
Source
docs/workflow.md

Community workflow#

Issue flow#

filed → approved → queued → claimed → done

StageMeaning
filedIssue opened and status/triage applied
approvedstatus/approved added by a maintainer
queuedstatus/queued is added automatically with status/approved
claimedstatus/claimed
doneIssue closed after three verifies or maintainer override

Pipeline widget#

Actionadon keeps the pipeline widget in the issue body and rewrites it in place at every stage.

Filed#

DAKOTA · issue pipeline
─────────────────────────────────────────────────
  ▶ filed report received
  · approved —
  · queued —
  · claimed —
  · done —
─────────────────────────────────────────────────
  report: attached/missing · confirms: N
  area: name · priority: name
  next action: same bug? ujust confirm NNN

Approved#

DAKOTA · issue pipeline
─────────────────────────────────────────────────
  ✓ filed report received
  ▶ approved cleared for the build queue
  · queued —
  · claimed —
  · done —
─────────────────────────────────────────────────
  report: attached/missing · confirms: N
  area: name · priority: name
  next action: comment /claim to take this

Queued#

DAKOTA · issue pipeline
─────────────────────────────────────────────────
  ✓ filed report received
  ✓ approved cleared for the build queue
  ▶ queued open for contributors
  · claimed —
  · done —
─────────────────────────────────────────────────
  report: attached/missing · confirms: N
  area: name · priority: name
  next action: comment /claim to take this

Claimed#

DAKOTA · issue pipeline
─────────────────────────────────────────────────
  ✓ filed report received
  ✓ approved cleared for the build queue
  ✓ queued open for contributors
  ▶ claimed @username
  · done —
─────────────────────────────────────────────────
  report: attached/missing · confirms: N
  area: name · priority: name
  next action: /unclaim to return to queue if stuck

Done#

DAKOTA · issue pipeline
─────────────────────────────────────────────────
  ✓ filed report received
  ✓ approved cleared for the build queue
  ✓ queued open for contributors
  ✓ claimed @username
  ▶ done fix shipped
─────────────────────────────────────────────────
  report: attached/missing · verified: N/3
  area: name · priority: name
  next action: ujust verify NNN — three verifies closes the case

Metadata rows are pulled live from GitHub at every transition:

  • report: — gist URL present in the body shows attached; no gist URL shows missing
  • confirms: — count of comments containing ujust confirm on open issues
  • verified: — count of comments containing ujust verify, shown as N/3 on closed issues
  • area: — extracted from area/* labels
  • priority: — extracted from priority/* labels

Triage signals#

  • report: attached means the full telemetry bundle is already there. Prioritize it over issues without a report and do not ask for data already in the gist.
  • confirms: N means N distinct hardware instances reproduced it. Treat high counts as higher priority.
  • verified: N/3 drives closure. Do not close the issue until it hits 3 or a maintainer explicitly overrides it.
  • High priority plus no assignee is a good immediate claim target.

Data donation pattern#

ujust report is a deliberate data donation. The reporter reviews the gist before filing, keeps ownership of it, and can delete it later. That is not telemetry.

ujust confirm adds another hardware instance without opening a duplicate. ujust verify adds post-fix evidence on real hardware and moves the issue toward closure.

flow/agent-donation issues: write the report as a comment, cite sources, close the issue. Do not open a PR.

Actionadon bot#

CommentWho can use itEffect
/claimanyoneAdds status/claimed, assigns the commenter
/unclaimassignee or write+Removes status/claimed, unassigns
/approve or /lgtmwrite+Adds lgtm

The widget lives in the issue body and is updated in place. Zero pipeline comments. One edit per stage.

<!-- actionadon-pipeline --> is the sentinel block Actionadon uses to find the widget. Do not remove it by hand.

Adding status/approved, or using /approve or /lgtm, also auto-queues the issue by adding status/queued.

Hive#

Copy files/hive/hive-project.yaml.example to /etc/hive/hive-project.yaml and load files/hive/agent-policies/ as per-agent CLAUDE.md overrides.

Labels#

LabelMeaning
status/triageNeeds human review — set kind, priority, and area
status/discussingNot ready for the agent queue
status/approvedApproved — ready for contributors
status/queuedHas a spec, ready to claim — comment /claim
status/claimedIn active work — comment /unclaim to return
agent/blockedBlocked — needs human input before work can continue
holdDo not touch
do-not-mergeDo not merge or automate
lgtmMaintainer approved — ready to merge
tests:passe2e tests passed; enables label-gated auto-merge
kind:bug / kind:improvement / kind:tech-debt / kind:github-actionChange type
flow/agent-donationInvestigation request — report comment, not code
flow/project-report / flow/issue-review / flow/pr-reviewHive scanner flow routing
needs-human/agent-oopsAgent error — do not touch; humans only

Hive exempt (do not touch): hold, do-not-merge, status/discussing, status/approved, status/claimed, agent/blocked, needs-human/agent-oops, duplicate, wontfix, stale

Image stream and branch model#

Dakota publishes three streams from the main branch:

main (source of truth)
  │
  └─► build.yml (nightly + merge_group + workflow_dispatch)
          │
          └─► publish.yml (workflow_run on build success)
                  │
                  ├─► :sha — immutable per-build tag
                  └─► :testing — promoted after e2e smoke passes
                                       │
                              weekly-testing-promotion.yml
                              (Sunday 06:00 UTC, production environment approval)
                                       │
                                       ├─► :latest (+ fast-forwards latest branch)
                                       └─► :stable (+ fast-forwards stable branch)
StreamTagCadenceGate
Development:shaEvery merge to mainNone
Testing:testingNightlye2e smoke
Latest:latestWeekly (Sunday)production environment approval
Stable:stableWeekly (Sunday)Same as :latest

All code merges to main. The :testing Docker tag is the published nightly result built from main. The testing, latest, and stable git branches are bookmarks fast-forwarded by the promotion workflows — they are not development branches.

Branch protection is only on main. Required status checks: validate + e2e.

Branch flow for contributors#

# Branch from upstream/main (never fork's local main)
git checkout upstream/main -b feat/my-change

# Work, validate, commit
just validate
git commit -m "feat(bluefin): ..."

# Push and open PR against main
git push upstream feat/my-change
gh pr create --repo projectbluefin/dakota --base main
  • freedesktop-sdk
  • gnome-build-meta — branch gnome-50
  • Dakota issues
  • Dakota board
  • All Bluefin projects
Documents
Changelogs
Bluefin LTS Errata
Pin Log
2024-12-30-ublue-2024-wrapup
2025-01-01-announcements-archive
2025-02-23-february-update
2025-05-14-bluefin-f42
2025-06-23-bazaar-default
2025-07-06-fresh-bluefin-isos-and-bazaar
2025-07-11-four-years-of-ublue
2025-07-15-bold-brew
2025-07-17-ask-projectbluefin
2025-08-01-august-wallpapers
2025-08-08-bluefin-on-lfx
2025-08-29-github-oss-fund
2025-09-17-color-with-bluefin
2025-09-18-bluefin-lts-and-gdx
2025-09-23-LTS-at-indiafoss
2025-10-28-bluefin-autumn
2025-10-31-fastfetch-metrics
2025-11-15-cloud-native-milestone-15-million
2025-11-16-coreos-desktop
2025-11-24-new-just-and-bbrew
2025-11-27-bluefin-and-paleoartists
2025-11-30-report
2025-12-04-flatpak-support-in-brewfiles
2025-12-06-interview-with-michael-tunnell
2025-12-07-documentation-updates
2025-12-14-huntress-holiday-wallpapers
2025-12-15-easier-homebrew-installation-for-custom-images
2025-12-27-upcoming-homebrew-cli-changes
2025-12-30-bluefin-2025-wrapup
2025-12-31-report
2026-01-03-modernizing-custom-images
2026-01-31-report
2026-02-01-automated-reports-changelogs
2026-02-28-report
2026-03-13-bluefin-cli-mac-wsl
2026-03-27-bluefin-lts-gnome-49-50
2026-03-29-composefs-fisherman
2026-03-29-composefs-fisherman-design
2026-03-30-boot-verification
2026-03-30-boot-verification-design
2026-03-30-proportional-progress-tracking
2026-03-30-proportional-progress-tracking-design
2026-03-31-report
2026-04-02-state-of-ecosystem
2026-04-19-dakota-alpha-1
2026-04-30-report
2026-05-05-bluefin-spring
2026-05-12-bluefin-spring-2026
2026-05-13-bluefin-spring-2026-2
2026-05-14-making-our-own-fate
2026-05-15-hummingbird
2026-05-23-gradia-capture-bluefin
2026-05-28-knuckle
2026-05-31-report
2026-06-11-promotion-pr-body
AGENTS
AGENTS
AGENTS
AGENTS
AGENTS
AGENTS
Building a Custom Bluefin Image
CI_CD_GUIDE
CLAUDE
CLAUDE
CONTRIBUTING
CONTRIBUTING
CONTRIBUTING
CONTRIBUTING
CONTRIBUTING
FAQ
How can I install Double Commander on Bluefin (an immutable Linux OS), coming from Arch Linux?
How can you fix random GPU artifacts and hard freezes on an AMD Framework 16 laptop running Linux (Bluefin/Fedora)?
How do I install the Cloudflare WARP (One) client on Bluefin?
How to Reset a User's Home Directory to Defaults on Bluefin
INDEX
MAINTAINERS
MULTI_VARIANT_BUILD
PITFALLS
PULL_REQUEST_TEMPLATE
Plex Media Server
README
README
README
README
README
README
README
README
README
SECURITY
SECURITY
SECURITY
SKILL
SKILL
SKILL
SKILL
TRANSLATING
Update Process
Which Bluefin ISO is recommended for a Lenovo Yoga Pro 9i with an NVIDIA RTX 4050 for Python data science and Machine Learning with CUDA?
about-monthly-reports
action-reference
actionadon
add-package
administration
agentic-contributing
ai
analytics
architect
architecture
artwork
blog-poster.agent
bluefin-dx
bluefin-gdx
bonedigger-agent-donation
bonedigger-lifecycle
bonedigger-overview
bonedigger-templates
bonedigger-ujust
bst-overrides
build
build
buildstream
ci
ci
ci
code-of-conduct
command-line
composite-actions
consumer-guide
consumer-validation
contributing
contributors
conventional-commit.prompt
copilot-instructions
copilot-instructions
copilot-instructions
copilot-instructions
dakota-tpm2-validation
debugging
demo-mode-e2e
determinism
dinosaurs
downloads
downloads-testing
driver-versions
e2e-ci
e2e-feature-verification
encryption-matrix
factory-operations
failure-paths
feedback-loop
gstreamer-codec-validation
human-gates
images
index
index
installation
installer
introduction
knuckle
label-workflow
libpastry-integration
live-iso
local-ota
lore
lts
luks-testing
merge-queue
mission
multi-arch
music
not-bluefin
oci-assembly
oci-layers
onboarding
overview
packaging-binaries
packaging-gnome-extensions
packaging-go
packaging-rust
packaging-zig
patch-junctions
patches
pr-checklist
pr-review
press-kit
projects
pull_request_template
pull_request_template
pull_request_template
qr-phone-companion
quickstart
r2-promotion
release-qualification
remove-package
reports
reusable-workflow
skill-improvement
supply-chain
t2-mac
testing
tips
troubleshooting
ujust-recipes
update-refs
upgrade-and-migration
ux-ubuntu-provision
values
variants
vm-stack
workflow