Skip to content

Epic: finish Tuna Desktop v1 capability parity and release qualification #577

Open

Description

@hanthor

Outcome

Deliver all unfinished GNOME 51 capabilities in the TunaOS desktop, prove their behavior against the Marlin GNOME baseline, and publish the working release across the 13 currently required TunaOS variant cells. Only albacore:tuna is temporarily owner-deferred/unqualified while its externally owned Mesa/GDM fix is pending; it is not counted as a pass.

Inventory and interpretation

The ledger at integration source a445af2e5f08397a0c7d970c19fe9782d96e4dd4 has 58 unfinished rows: 15 missing, 34 partial and 9 passing only in nested sessions. These are starting classifications, not fresh runtime qualifications. Code candidates and scoped proofs must be reviewed before another implementation is started. Nested-only behavior requires installed-image or hardware qualification.

Current ledger (main 8cd7dd75 plus the 2026-11-10 audit rows): 83 rows: 14 pass, 10 pass (nested), 49 partial, 10 missing, so 69 unfinished rows. P-A11Y-07 (pointer aids, split from P-A11Y-04) is tracked under #350. Every row that read missing before the audit now has an implementation and reads partial; per-row statuses below are refreshed to match, and a move from missing to partial is not a qualification. The audit found 10 GNOME 51 behaviours with no code and no ledger row; they are added below as missing rows (#1033–#1042).

Capability tasks

All58 capability issues carry implementation specifications. Existing descriptions were preserved; nested-only rows have explicit installed-image/hardware qualification tasks.

Required child-issue specification

Each issue must contain:

  • The user-visible behavior and remaining gap.
  • Current source locations and any implementation already in progress.
  • Bounded subtasks and dependencies for smaller-model implementation.
  • GNOME 51 reference behavior and explicit acceptance criteria.
  • Positive, negative, restart and failure cases where relevant.
  • Concrete build and proof commands, with hardware requirements identified.
  • Evidence requirements: source revision, executable/package/image identity, actual behavior, logs and verified cleanup.

A settings write, synthetic state assertion, existing PR, or green test outside the required scope cannot establish completion. An implementer must validate code paths in the checkout, preserve unrelated work and ask for missing hardware access rather than invent results.

Integration and release gates

  • Build compatible compositor, shell, host and protocol changes together.
  • Pass the complete ledger check and an independent gap audit.
  • Complete the real-greeter daily-driver journey without GNOME session fallback.
  • Prove faster matched latency than GNOME 51, with CPU and memory no worse; complete matched guest CPU/memory comparisons. GPU and total-power comparisons are follow-up work and do not block v1 release (owner decision, 2026-10-13).
  • Verify signed packages, published image identity, install, upgrade and recovery with user data preserved.
  • Complete independent Corral VM qualification.
  • Publish the public checklist and owner declaration.
  • Publish and validate the 13 required variants: yellowfin, skipjack, wahoo, bonito, hummingbird, sailfin, guppy, bonito-rawhide, gurnard, grouper, marlin, flounder and flounder-sid. Track albacore:tuna separately as owner-deferred/unqualified, not as a fourteenth qualified cell.

Scope decisions

Owner decision (2026-10-13): v1 may release without GPU and total-power comparisons. These measurements remain follow-up work, with no GPU or power superiority claim until measured. Functional capability, visual, authentication/security, signed install/upgrade/recovery, Corral, matched latency and guest CPU/memory gates remain required.

Owner decision (Albacore scope override): temporarily omit only albacore:tuna from active graphical qualification and publication until the externally owned Mesa/GDM crash is fixed. Retain all fourteen implementation identities and all unrelated build, package, security and release gates. Preserve historical Albacore receipts unchanged, and requalify that cell before lifting the deferral. No other failed or unmeasured variant receives this exception.

Noise removal is v2. Webcam overlay and microphone recording remain a proposed extension awaiting a scope decision.

Completion rule

The epic closes only when every capability task and release gate has evidence matching its full scope. Child-issue completion does not by itself prove release readiness.

All-variant implementation tracking

Historical starting audit, not current configuration: the TunaOS snapshot 72001d9a8a91743811230f632df72cdc5434847d was recorded as admitting only experimental Marlin:tuna, and package-factory snapshot bfc8a3d6ea3abde2f163b632f919366d020ae82c as declaring Tuna targets: [arch]. The following checkboxes track implementation history, not completed installed-image or release gates. Marlin history is tracked by TunaOS #2990, greeter issue #3110 and package provenance PR #818; closed experimental admission does not qualify final v1. Draft TunaOS #3194 records target-neutral installed ownership/routing checks only. Current source, configuration and exact runtime/publication receipts determine present admission.

Variant implementation tracking (Marlin tracked separately)

Shared native package target closures

Each task requires exact-head signed package/image attribution, actual installed package ownership/dependencies and real session/authentication/portal/visual evidence. Native greeter wiring, unsupported architectures, GNOME 51 performance/resource gates and hardware qualification remain open. No intermediate source revision is designated as the final release pin.

Activity

  1. added
    🐝 covered by PRHive verified that an open PR references or claims this issue; still actionable until confirmed
    on Oct 10, 2026
  2. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    Review update — 2026-10-11

    No open capability issue or PR was closed as stale: the older items remain recently active and describe unfinished behavior or qualification. Issue #449 remains open because merged #455 proves only its scoped pointer-constraint behavior; native edge cases and shipped-image/physical qualification remain unproven. I removed the misleading hive/likely-done label.

    The repeated J-WS-NEXT / G-WORKSPACE-SLIDE failures have a candidate shared fix in PR #600, commit afaa7b1e. The core workspace path is crates/compositor/src/windows.rs; shell FocusWorkspace departure reporting is in crates/compositor/src/control.rs, with lease application in crates/compositor/src/runtime.rs and state in crates/compositor/src/state.rs. Focused tests and local checks passed; exact-head CI run 38099358045 is still running. Keep the PR draft until the shared integration base is reconciled and CI plus journey proofs pass.

    Other forward status:

    No currently open PR is merge-ready based on the present exact-head evidence. The already-green docs and toolchain PRs #570 and #568 were merged earlier.

  3. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    Wave 2 qualification update (2026-10-11):

    All these PRs remain drafts pending dependency integration and full exact-head green checks. No merge-readiness is claimed.

  4. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    Stack integration update (2026-10-11): PR #601 is now a clean draft stacked on PR #600's branch w2-338, with base afaa7b1 and head 02b5903. Exact-head CI 38102579871 and measured coverage 38102579869 are running on the combined workspace-retention + rotation stack.

    The prior standalone head da8cc9d lacked afaa7b1. Its J-WS-NEXT failure was expected, and after the test-helper correction its slide gate reached the real retarget assertion and failed without workspace retention. That does not establish the combined stack's behavior; the new run will verify it. The old run also exposed separate portal-security and Niri-parity failures that remain unclassified pending the stacked run.

  5. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    Integration audit update (2026-10-11): exact stack validation is still running on PR #601 head 3ddc580, based on PR #600 head afaa7b1. Build, measured coverage, validation, both decoders, app-content, scroll-proof and drm-smoke have passed so far; journey, gtk-shell and arch-package are still running.

    I also verified the merge-base issue: current origin/main is bbc01ed, while PR #600 still has base c387326, 7 commits behind current main and 114 commits ahead of the merge base; it is DIRTY. PRs #598/#599/#602 share the same old base and are also DIRTY. The #601 stack is useful exact-source qualification, but it is not yet a mergeable v1 integration. Reconcile the intended union against current main before merging any lane; do not close child capability issues from these draft PRs.

  6. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    Exact-stack run 38102898073 (head 3ddc580) has now failed gtk-shell at G-GRID-DRAG-CANCEL, before G-WORKSPACE-SLIDE ran. This is a new blocker to triage, not a workspace-slide result. The uploaded gtk-shell artifact asserts “real local folder drag has no neighboring-page hint”; its a11y snapshot contains only “Previous page preview” and the trace logs show drag start, pager motion (page=0), then a grid-hover timer firing edge=Start. The screenshot and logs are in the gtk-shell artifact: https://github.com/tuna-os/tuna-desktop/actions/runs/38102898073/artifacts/11688836837

    Please diagnose whether the local-folder drag is reordering the source or whether pager hint synchronization is wrong; preserve this gate and rerun it. The journey job is still running, so J-WS-NEXT is not yet adjudicated on this stack. No G-WORKSPACE-SLIDE result from this gtk-shell run.

  7. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    Exact-stack update — PR #601 head 3ddc580, run 38102898073 (polled 2026-10-11 02:12 UTC):

    Passed: build/clippy check, measured coverage, test-strategy validation, control decoder fuzz, app-content, DRM smoke, scroll proof, Arch package, remote-security, portal-security, Niri parity and Marlin image build.

    Failed: gtk-shell at G-GRID-DRAG-CANCEL. The real local-folder drag starts, but the a11y snapshot shows only Previous page preview; trace records a tile-hover reorder timer firing. This exits before G-WORKSPACE-SLIDE, so that gate has no result on this stack.

    Still running: installed-session journey and the Marlin VM boot/tour. Their exact results are pending. The earlier stack-base reconciliation blocker also remains: PR #600/#601 need the intended v1 union reconciled against current main before merge; the lane stack is qualification evidence only.

  8. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    Exact-stack journey result (run 38102898073, PR #601 head 3ddc580): installed-session qualification passed. The uploaded journey artifact at https://github.com/tuna-os/tuna-desktop/actions/runs/38102898073/artifacts/11688164736 records J-WS-NEXT pass Super+PageDown activates workspace 1; nested.log records tuna-compositor: workspace now 1. This verifies the J-WS-NEXT workspace-retention fix on the stacked build and the installed Debian-format candidate.

    The run remains incomplete: gtk-shell failed earlier at G-GRID-DRAG-CANCEL, so G-WORKSPACE-SLIDE was not reached; the Marlin VM boot/tour is still running. No capability or release gate is closed by this one journey result.

  9. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    Exact-stack update — 2026-10-11 UTC

    • PR WIP: output rotation + sensor orientation backend (#345) #601 head 3ddc5800 run 38102898073: J-WS-NEXT passed. GTK shell failed earlier at G-GRID-DRAG-CANCEL, so this run has no later workspace-slide result. The Marlin VM job is still in progress.
    • The older J-WS-NEXT reproductions predate afaa7b1e; that shared compositor change grants the departed workspace a grace lease through dynamic compaction. The exact afaa7b1e run reports both J-WS-NEXT and G-WORKSPACE-SLIDE green.
    • Draft PR WIP: prevent app-grid carousel swipes during tile drag #608 (775a93a9), stacked on w2-345, isolates a GTK hypothesis from the current blocker: the Carousel's pointer paging competes with a local tile drag and changes the preview page. Exact-head CI is pending. This remains an unverified candidate, not a closed capability.

    No v1 release gate is being treated as complete from these lane results.

  10. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    Main-base integration candidate — 2026-10-11 UTC

    Draft PR #609 merges current main (bbc01ed2) with the v1 implementation stack at afaa7b1e, resolving the ten overlapping files in an isolated worktree. It retains the current-main workspace-slide proof timing and the actual GTK accessibility proof/ledger gate. Head: 68e3db2a.

    Exact-head checks, coverage, both decoder jobs, and validation are pending. This branch is for combined-tree integration only; component PRs and capability issues remain open until their scoped proofs and all v1 release gates pass.

  11. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    Integration status — 2026-10-11

    The workspace failure shared by J-WS-NEXT and G-WORKSPACE-SLIDE is traced to workspace pruning/remapping during an active slide. The existing lease fix is commit afaa7b1, carried in the #600 → #601 stack. On #601 head 3ddc5800, the journey job in run 38102898073 passes those two keyboard-switch proofs.

    The #603–#607 lane branches still need to inherit that stack commit. Muse has the authorized lane-by-lane restack and exact-head CI queued behind each current workflow reaching terminal; no lane merge is authorized by the current evidence. As of this update, the active runs are still in progress.

    This does not satisfy the full v1 epic: child capabilities and all integration, hardware performance, package/image, Corral, and 14-variant publication gates remain open until their required evidence is recorded.

  12. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    Exact-head CI follow-up — 2026-10-11 UTC

    The first four lane restacks exposed a shared integration regression: older bell-example fixups reintroduced an inline idle_schedule module on top of the production-path module in the #601 stack (E0428, duplicate definition). I removed only the redundant inline helper and pushed corrected heads:

    At this update, those corrected CI/coverage runs are still active; strategy validation passed for all four. The original clippy failures were on superseded heads and do not qualify lane behavior.

    PR #614 (b711cf00) remains on its pre-current-main base while exact-head journey, GTK, and Marlin VM jobs run; completed check, coverage, app-content, DRM, scroll, Arch, image, remote-security and Niri checks pass. PR #609's alternating stock-vs-candidate performance comparison is also actively measuring; do not cancel it for a rebase. No capability or release gate is closed by these partial results.

  13. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    Workspace slide fix merged — 2026-10-11 UTC

    PR #614 is merged to main as 2ad5d3474ff132a885ac50121645035f10d3bd5c. Its exact-head run completed all 16 checks successfully, including journey, gtk-shell, and marlin-vm. The scoped change lets WorkspaceSlide::observe retarget a changed active workspace while following a touch gesture; its new test covers a second and third rapid workspace switch during a swipe.

    This closes only the mid-swipe retarget defect covered by #614. It does not close the broader workspace/gesture capability or release gate. The J-WS-NEXT report on several lane heads remains under investigation in the separate compositor key-input path (windows.rs); lane results must be rechecked on the merged base before claiming that behavior passes.

  14. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    J-WS-NEXT evidence correction — 2026-10-11 UTC

    The four runs Muse cited (jobs 114324902419, 114332546988, 114328607571, 114328824392) ran on Oct 10 between 22:14 and 22:57 UTC. The root fix afaa7b1 was authored Oct 11 at 00:42 UTC, so those failures predate it. The later #601 run 38102898073 passed J-WS-NEXT; #603's current head f7ccb9ce contains afaa7b1 and its journey is still running.

    #604's current head ec82cf09 is not actually based on the #601/w2-345 stack (its ancestry merge-base is a445af2e). The GitHub PR base setting alone does not put that code in the CI checkout. After #604's live checks finish, it needs a true restack on w2-345 and exact-head CI. Keep the broader J-WS capability open until that and the other scoped proofs pass.

  15. hanthor commented on Oct 11, 2026

    @hanthor
    MemberAuthor

    App-grid drag lane evidence — 2026-10-11 UTC

    PR #608 head 3b32d56a has green exact-head check, journey, coverage, GTK-shell, package, and security/parity jobs. Its journey passes the app-grid drag coverage that failed as G-GRID-PAGE-PEEK on #613. #608's Marlin VM job is still a blocker: it timed out at 903 seconds with V-DISPLAY-MANAGER, V-PANEL, and V-SHELL failures, so #608 is not mergeable yet. Keep the relevant capability and release gate open until the installed-image failure is diagnosed and exact-head qualification passes.

  16. 60 remaining items

  17. hanthor commented on Oct 31, 2026

    @hanthor
    MemberAuthor

    Published beta.2-2 Corral qualification: evidence PR #968 (#968), image ghcr.io/tuna-os/marlin@sha256:d0e65bce0ac55cb6c58bcf3739e30d6372fe4be978e6ea7c0c1310b3962bdfa5, guest tuna-desktop 1.0.0beta.2-2, no tuna-greeter. Full GDM login → all 27 daily-driver steps → logout, VM deleted. Night Light #339 now passes (setting true, org.gnome.SettingsDaemon.Color owned by tuna-compositor). However notify-send still fails Unknown method GetServerInformation (#843); lock ScreenSaver.GetActive=true but LockedHint=no (#846). Frame review still shows Dark Style tile off with prefer-dark (#844), banner over date menu (#845), and translucent power popover (#847). Raw script 24 pass / 3 fail: the third fail is zero VM backlights despite PipeWire Dummy Output, not a new product bug. This is evidence about the immutable tagged beta.2 payload, NOT a claim that fixes on current source main are broken. No new product bug established. Published-image nightly for this same digest: https://github.com/tuna-os/tuna-desktop/actions/runs/41199130139 .

  18. hanthor commented on Oct 31, 2026

    @hanthor
    MemberAuthor

    Owner direction: temporarily defer albacore:tuna while the Albacore GDM Mesa crash is being fixed elsewhere. Stop duplicate Mesa/admission/publication work in this lane; preserve its source and receipts for handoff. Albacore is deferred and unqualified, not passed or closed by this exception. Continue the other variants and retain all unrelated acceptance gates. Requalify Albacore once the external Mesa fix is available; this is not an all-variant release declaration.

  19. hanthor commented on Nov 10, 2026

    @hanthor
    MemberAuthor

    2026-11-10 project review: findings filed as issues

    A full review of main 8cd7dd75 against the v1 bar. Every finding is now an issue.

    Untracked GNOME 51 behaviours (no code, no ledger row; added to the capability list in the body as missing rows): #1033 clipboard retention after the copying app closes, #1034 X11 server-side frames, #1035 "not responding" dialog, #1036 World Clocks and Weather, #1037 MPRIS media controls, #1038 Airplane Mode and keyboard backlight toggles, #1039 Switch User, #1040 InputCapture, #1041 Thunderbolt authorisation, #1042 captive-portal login. Clipboard retention, X11 frames and the unresponsive-app dialog are the ones a daily user hits first.

    Delivery and release

    Platform and performance

    Security

    The body's ledger note and per-row statuses were refreshed in the same review (the seven rows that read missing, #338 #341 #344 #349 #357 #362 #366, now read partial, and #591 reads partial).

  20. hanthor commented on Nov 10, 2026

    @hanthor
    MemberAuthor

    2026-11-10 implementation lanes from the review

    Each PR implements one filed gap, verified locally with cargo fmt, cargo clippy -D warnings and the touched crates' tests; nested/installed proofs run in CI. No ledger row moves to pass from these.

    Gap Ledger row PR
    #1033 clipboard kept after the owner goes (Mutter clipboard manager) P-SY-11 #1056
    #1035 "not responding" dialog, Force Quit / Wait (wire 0.50) P-WM-11 #1060
    #1037 media players in the calendar message list (stacked on #926) P-NT-04 #1059
    #1038 Airplane Mode and keyboard backlight quick settings P-PN-05 #1053
    #1039 Switch User P-SY-12 #1055
    #1041 Thunderbolt enrolment and notices P-SY-14 #1058
    #1042 captive-portal sign-in P-ST-12 #1054
    #1048 layer shell only for the supervised shell (security) — #1057
    #1046 wire Smithay protocols (security-context, idle-notify, content-type, foreign-toplevel-list, alpha-modifier) — #1061 (stacked on #1057)
    #1040 org.gnome.Mutter.InputCapture (InputCapture portal) P-SY-13 #1062

    Ledger rows and stale-doc fixes: #1052. Not started (need a decision, design or hardware): #1034 X11 frames, #1036 World Clocks/Weather (no GWeather binding available), #1043–#1045, #1049–#1051. #1047 has a Smithay upstream audit to decide on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    hive/partially-addressedA merged PR addressed only part of this issue; remainder still actionablestage/010-actionableTriaged; eligible for the hive to pick upstage/stalledIn its current stage longer than expected

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions