Skip to content

fix(ci): drop the two orphaned gitlinks that break every checkout - #5474

Closed
CodeGhost21 wants to merge 2 commits into
tinyhumansai:mainfrom
CodeGhost21:fix/orphaned-tauri-cef-gitlink
Closed

CodeGhost21 wants to merge 2 commits into
tinyhumansai:mainfrom
CodeGhost21:fix/orphaned-tauri-cef-gitlink

Conversation

@CodeGhost21

@CodeGhost21 CodeGhost21 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Removes two gitlinks that no longer have .gitmodules entries — app/src-tauri/vendor/tauri-cef and app/src-tauri/vendor/tauri-plugin-notification — which abort actions/checkout on every branch and every PR in the repo, including main.
  • Removes the tauri-cef pin guard workflow and .github/tauri-cef-expected-sha with them: the guard asserts a SHA on a gitlink that no longer exists, so it fails permanently once the gitlink goes.
  • Corrects the CONTRIBUTING.md clone instructions, which still tell contributors both vendored Tauri trees are required and that builds fail without them.
  • Does not fix the second, unrelated CI break on main (the unpublished openhuman_ci:rust-1.96.1 image) — see Impact.

Problem

1843706c3 ("refactor(tauri): replace CEF runtime with upstream Wry") removed the [submodule …] stanzas for both vendored Tauri trees from .gitmodules, but left the gitlinks themselves in the tree:

160000 commit 455b47debb9d1f5d0f1527266e48af1670ad4bc5  app/src-tauri/vendor/tauri-cef
160000 commit …                                          app/src-tauri/vendor/tauri-plugin-notification

actions/checkout's recursive submodule pass walks a gitlink it has no url for and aborts the entire checkout step:

fatal: No url found for submodule path 'app/src-tauri/vendor/tauri-cef' in .gitmodules
The process '/usr/bin/git' failed with exit code 128

This is every job that sets submodules:, before a line of code is read. On PR #5431's head: Detect Changed Areas, Feature Forwarding Gate, Orchestration IP Gate and Verify tauri-cef submodule pin all fail in Checkout; PR CI Gate then fails purely as their aggregator.

The quieter half is worse. Everything that needs: Detect Changed Areas — Frontend Checks, both Rust coverage jobs, Rust Feature-Gate Smoke, Test Inventory — reports skipping, not failure. The ≥80% diff-coverage merge gate has therefore not been running, rather than failing, for as long as this has been broken.

Not PR-specific: main's own latest ci-lite run (31302258624) is red on exactly the same four jobs plus the gate.

Solution

Drop both gitlinks (git rm --cached), the dead guard, and the stale doc claim.

Both orphans, not just the reported one. Git reports the first orphan and aborts, so fixing tauri-cef alone leaves checkout failing identically on tauri-plugin-notification — which is what a scratch-clone check of the first draft of this change actually did. Rather than fix-and-re-run, the full set was found by diffing every gitlink in the tree against the declared paths:

$ git ls-tree -r HEAD | awk '$2=="commit"{print $4}' | sort > gitlinks
$ git config -f .gitmodules --get-regexp '^submodule\..*\.path$' | awk '{print $2}' | sort > declared
$ comm -23 gitlinks declared     # orphaned gitlinks
$ comm -13 gitlinks declared     # declared but no gitlink

Those two are the only orphans, and no declared submodule is missing its gitlink.

Both trees are genuinely dead, not merely undeclared. app/src-tauri builds on upstream Wry (tauri = { features = ["wry"] }); tauri-plugin-notification is a plain crates.io dependency (= "2") with no [patch] or path entry pointing at the vendored copy; nothing else declares a path dependency on either. The only survivors are stale comments and CEF cache paths in workflows — noise rather than breakage, left for the rest of the Wry cleanup rather than widened into this diff.

The pin guard has to go with the gitlink. It runs git ls-tree HEAD app/src-tauri/vendor/tauri-cef and compares against .github/tauri-cef-expected-sha; with the gitlink removed that reads empty and the job fails on every PR forever. It existed to stop an accidental revert of the pin carrying the AppImage glibc/NSS exclusion fixes (#1996, #2032, #2154/#2088) — the CEF runtime removal already made that unreachable, so there is no pin left to protect.

Submission Checklist

If a section does not apply to this change, mark the item as N/A with a one-line reason. Do not delete items.

  • N/A: Tests added or updated — this removes two tree entries, a workflow and a data file; there is no code path to test. Verified by reproducing the failure and the fix on a scratch clone instead (see Validation Run).
  • N/A: Diff coverage ≥ 80% — no source lines added or changed, so diff-cover has nothing to measure. (Note this gate has not been running at all — it is one of the skipping jobs this PR restores.)
  • N/A: Coverage matrix updated — no feature rows added, removed or renamed.
  • N/A: All affected feature IDs from the matrix are listed under ## Related — no matrix rows are involved.
  • No new external network dependencies introduced — removes content only.
  • N/A: Manual smoke checklist updated — CI plumbing, not a release-cut surface.
  • N/A: Linked issue closed via Closes #NNN — no issue is open for this; found while investigating red CI on Surface the feedback quality tier in the composer #5431.

Impact

CI plumbing and one doc paragraph. No Rust, no TypeScript, no RPC, no schema change, and no effect on a built app.

Anyone with an existing clone keeps a now-untracked app/src-tauri/vendor/tauri-cef / tauri-plugin-notification directory on disk. Harmless, and git clean -ffdx or a manual rm -rf clears it; no action is required for builds.

This is only half of the CI outage. The second break is independent and still open after this merges: ci-lite pulls ghcr.io/tinyhumansai/openhuman_ci:rust-1.96.1, but that package publishes only rust-1.93.0 and latest, so Coverage Matrix Sync and PR Submission Checklist die at Initialize containers with manifest unknown.

The image needs publishing — reverting the tag is not an option, since rust-toolchain.toml pins 1.96.1 and needs it for rusqlite 0.40 / libsqlite3-sys 0.38's cfg_select!. Ordering matters: Build CI Image is workflow_dispatch-only and checks out with submodules: recursive, so it cannot even run until this PR lands. Merge this first, then dispatch it — I do not have permissions to dispatch it myself.

Related

  • Closes: n/a — no issue open; found while investigating red CI on Surface the feedback quality tier in the composer #5431.
  • Follow-up PR(s)/TODOs:
    • Publish ghcr.io/tinyhumansai/openhuman_ci:rust-1.96.1 (dispatch Build CI Image after this merges).
    • Remaining Wry cleanup: stale CEF cache paths and comments across ci-lite.yml, e2e-reusable.yml, build-desktop.yml, gitbooks/developing/cef.md and the CLAUDE.md/AGENTS.md "Vendored CEF-aware tauri-cli" note.
  • Caused by: 1843706c3 (refactor(tauri): replace CEF runtime with upstream Wry)

AI Authored PR Metadata (required for Codex/Linear PRs)

Keep this section for AI-authored PRs. For human-only PRs, mark each field N/A.

Linear Issue

  • Key: N/A
  • URL: N/A

Commit & Branch

  • Branch: fix/orphaned-tauri-cef-gitlink
  • Commit SHA: 807ebc4

Validation Run

  • pnpm --filter openhuman-app format:check — N/A, no formatted source touched (one Markdown paragraph).
  • pnpm typecheck — N/A, no TypeScript in the diff.
  • Focused tests: reproduced the failure and the fix on a scratch clone, running the command actions/checkout fails on:
    • on 8774fe4a (current main): git submodule foreach --recursive → exit 128, fatal: No url found for submodule path 'app/src-tauri/vendor/tauri-cef' in .gitmodules
    • with only tauri-cef removed: exit 128, same error for tauri-plugin-notification — which is how the second orphan was found
    • on 807ebc473 (this branch): exit 0, empty stderr, and the orphan diff above reports none in either direction
  • Rust fmt/check (if changed): N/A — no Rust changed.
  • Tauri fmt/check (if changed): N/A — no Rust changed.

Validation Blocked

  • command: Build CI Image (workflow_dispatch)
  • error: cannot dispatch — no write access; and it would fail at checkout anyway until this PR lands, since it uses submodules: recursive
  • impact: the container-image half of the CI outage stays open after this merges; a maintainer needs to dispatch it

Behavior Changes

  • Intended behavior change: actions/checkout succeeds again for every job that requests submodules.
  • User-visible effect: none in the app. For CI, the jobs that were skipping — including the ≥80% diff-coverage gate — start running again, so PRs may now go red on real failures that were being silently skipped.

Parity Contract

  • Legacy behavior preserved: all eight live vendor/tiny* submodules are untouched and still init recursively; the diff removes only entries with no .gitmodules declaration.
  • Guard/fallback/dispatch parity checks: the removed pin guard has no surviving subject — the CEF runtime, the submodule declaration and now the gitlink are all gone, so there is no pin it could still protect.

Duplicate / Superseded PR Handling

  • Duplicate PR(s): none found — searched open PRs for cef / submodule / gitmodules.
  • Canonical PR: this one.
  • Resolution: n/a

Summary by CodeRabbit

  • Chores

    • Removed locally maintained copies of desktop framework and notification components.
    • Updated the desktop application to use upstream framework components and the published notification plugin.
    • Removed automated checks related to pinning the former desktop framework source.
  • Documentation

    • Updated contribution guidance to reflect the current desktop setup and source management process.

`refactor(tauri): replace CEF runtime with upstream Wry` (1843706) removed
the `tauri-cef` and `tauri-plugin-notification` stanzas from `.gitmodules` but
left both gitlinks in the tree:

    160000 commit 455b47de…  app/src-tauri/vendor/tauri-cef
    160000 commit …          app/src-tauri/vendor/tauri-plugin-notification

`actions/checkout`'s recursive submodule pass then walks a gitlink it has no
url for and aborts the whole checkout step:

    fatal: No url found for submodule path 'app/src-tauri/vendor/tauri-cef' in .gitmodules
    The process '/usr/bin/git' failed with exit code 128

That is every job with `submodules:` on every branch and every PR, before a
line of code is read — Detect Changed Areas, Feature Forwarding Gate,
Orchestration IP Gate and the tauri-cef pin guard fail, PR CI Gate fails as
their aggregator, and the whole ci-lite graph that `needs:` Detect Changed
Areas (Frontend Checks, both Rust coverage jobs, Feature-Gate Smoke, Test
Inventory) degrades to `skipping`, so the coverage gate silently stops running
rather than failing. `main`'s own runs are red the same way (31302258624).

Git reports only the first orphan and aborts, so fixing `tauri-cef` alone
leaves checkout failing on `tauri-plugin-notification` with an identical
error. Rather than fix one and re-run, both were found by diffing every
gitlink in the tree against the paths declared in `.gitmodules`; those two are
the only orphans, and no declared submodule is missing its gitlink.

Both are genuinely dead, not merely undeclared: `app/src-tauri` builds on
upstream Wry (`tauri = { features = ["wry"] }`), `tauri-plugin-notification`
is a plain crates.io dependency (`= "2"`) with no `[patch]` or path entry
pointing at the vendored copy, and nothing else declares a path dependency on
either tree. The only survivors are stale comments and CEF cache paths in
workflows — noise, not breakage, and left for the rest of the Wry cleanup.

Also removes the tauri-cef pin guard and `.github/tauri-cef-expected-sha`.
The guard asserts `git ls-tree HEAD app/src-tauri/vendor/tauri-cef` matches
the expected SHA; with the gitlink gone it reads empty and the job fails
permanently. It existed to stop an accidental revert of the pin carrying the
AppImage glibc/NSS exclusion fixes (tinyhumansai#1996, tinyhumansai#2032, tinyhumansai#2154/tinyhumansai#2088), which the CEF
runtime removal has already made unreachable — there is no pin left to guard.

CONTRIBUTING.md told contributors both vendored trees "are part of the current
desktop toolchain" and that builds fail without them, which is now false and
sends new contributors into a `git submodule update --init --recursive` that
aborts. Replaced with what the submodules are actually for.

Verified by reproducing the failure and the fix on a scratch clone:
`git submodule foreach --recursive` exits 128 on 8774fe4 and 0 here.

Does not address the second, independent CI break: ci-lite pulls
`ghcr.io/tinyhumansai/openhuman_ci:rust-1.96.1`, but only `rust-1.93.0` and
`latest` are published, so the container jobs die at `Initialize containers`
with `manifest unknown`. The image has to be published — reverting the tag is
not an option, since `rust-toolchain.toml` requires 1.96.1 for rusqlite 0.40's
`cfg_select!`. Note the ordering: `Build CI Image` itself checks out with
`submodules: recursive`, so it cannot run until this lands.
@CodeGhost21
CodeGhost21 requested a review from a team August 10, 2026 07:22
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 26c1c480-18e7-476e-9acb-91811bfc60a8

📥 Commits

Reviewing files that changed from the base of the PR and between 807ebc4 and 835fc37.

📒 Files selected for processing (1)
  • CONTRIBUTING.md
💤 Files with no reviewable changes (1)
  • CONTRIBUTING.md

📝 Walkthrough

Walkthrough

The change removes vendored Tauri CEF and notification sources, deletes the related SHA pin and guard workflow, and updates contribution documentation for the current dependency sources.

Changes

Tauri source cleanup

Layer / File(s) Summary
Remove vendored sources and pin guard
.github/tauri-cef-expected-sha, .github/workflows/tauri-cef-pin-guard.yml, app/src-tauri/vendor/tauri-cef, app/src-tauri/vendor/tauri-plugin-notification
The Tauri CEF SHA file, pin guard workflow, and two vendored submodule references were deleted.
Update contribution documentation
CONTRIBUTING.md
The documentation now lists the vendor/tiny* path dependencies and identifies crates.io and upstream Wry as the remaining sources.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Poem

I’m a rabbit with a tidy cart,
Removing old pins with a gentle start.
Tauri paths now point upstream bright,
Tiny vendors keep the build light.
Hop, hop—clean sources in sight!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the primary change: removing two orphaned gitlinks that caused checkout failures.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@tinysweeper tinysweeper Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tinysweeper found nothing blocking. Approving.

             $0.0006 · 7,161 in / 1,871 out · 5,120 cached (71%) · z-ai/glm-5.2
critique:    $0.0002 · 1,981 in / 565 out   · 1,451 cached (73%) · z-ai/glm-5.2
description: $0.0004 · 5,180 in / 1,306 out · 3,669 cached (71%) · z-ai/glm-5.2

@tinysweeper

tinysweeper Bot commented Aug 10, 2026

Copy link
Copy Markdown

What this change touches

5 files, +2 -56 across 4 components. The code graph knows nothing about these files yet — normal for newly added files, and a cold index otherwise.

flowchart LR
  n0[".github/workflows<br/>1 file +0 -47"]:::changed
  n1["root<br/>1 file +2 -6"]:::changed
  n2["app/src-tauri/vendor<br/>2 files +0 -2"]:::changed
  n3[".github<br/>1 file +0 -1"]:::changed
  classDef changed fill:#0d4429,stroke:#238636,color:#e6edf3
  classDef impacted fill:#161b22,stroke:#6e7681,color:#c9d1d9
  classDef flagged fill:#5a1e02,stroke:#d93f0b,color:#ffffff
  classDef blocking fill:#67060c,stroke:#f85149,color:#ffffff
Loading

Green: changed. Grey: untouched, reached through an import or a call. Orange: has findings. Red: has a finding that blocks the merge.

Component Files Lines Findings
.github/workflows changed 1 +0 -47
(root) changed 1 +2 -6
app/src-tauri/vendor changed 2 +0 -2
.github changed 1 +0 -1
Changed files

.github/workflows

  • .github/workflows/tauri-cef-pin-guard.yml

(root)

  • CONTRIBUTING.md

app/src-tauri/vendor

  • app/src-tauri/vendor/tauri-cef
  • app/src-tauri/vendor/tauri-plugin-notification

.github

  • .github/tauri-cef-expected-sha

tinysweeper 0.1.0

@tinysweeper tinysweeper Bot added the priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. label Aug 10, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CONTRIBUTING.md`:
- Line 152: Remove or rewrite the CEF-specific setup block near the
architecture/toolchain instructions, including the x86_64-apple-darwin
installation justified by universal CEF builds. Keep the CONTRIBUTING.md setup
guidance aligned with the upstream Wry-based desktop shell and retain only
requirements still needed by the current build.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 1ae27c04-21cb-4c83-8820-2715011e03b4

📥 Commits

Reviewing files that changed from the base of the PR and between 8774fe4 and 807ebc4.

📒 Files selected for processing (5)
  • .github/tauri-cef-expected-sha
  • .github/workflows/tauri-cef-pin-guard.yml
  • CONTRIBUTING.md
  • app/src-tauri/vendor/tauri-cef
  • app/src-tauri/vendor/tauri-plugin-notification
💤 Files with no reviewable changes (4)
  • app/src-tauri/vendor/tauri-cef
  • .github/tauri-cef-expected-sha
  • app/src-tauri/vendor/tauri-plugin-notification
  • .github/workflows/tauri-cef-pin-guard.yml

Comment thread CONTRIBUTING.md
- `app/src-tauri/vendor/tauri-plugin-notification`

Those vendored trees are part of the current desktop toolchain. If they are missing, desktop builds and Tauri CLI setup will fail.
The two Tauri trees this list used to name — `vendor/tauri-cef` and `vendor/tauri-plugin-notification` — are gone. The desktop shell builds on upstream Wry and takes `tauri-plugin-notification` from crates.io.

@coderabbitai coderabbitai Bot Aug 10, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Remove the remaining CEF setup instructions.

Line 152 says CEF is gone, but Lines 134-135 still instruct contributors to install x86_64-apple-darwin because “CEF builds a universal binary.” Delete or rewrite that CEF-specific block so the setup matches the Wry-based desktop shell.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CONTRIBUTING.md` at line 152, Remove or rewrite the CEF-specific setup block
near the architecture/toolchain instructions, including the x86_64-apple-darwin
installation justified by universal CEF builds. Keep the CONTRIBUTING.md setup
guidance aligned with the upstream Wry-based desktop shell and retain only
requirements still needed by the current build.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Split this one — took the part that is this PR's own fact, deferred the rest.

Taken (835fc37): the requirements-table row Tauri vendored sources | Git submodules under app/src-tauri/vendor/ | Required for the CEF-aware Tauri CLI and notification plugin patches. After this change that directory has no submodules at all, so the row names a prerequisite a contributor cannot satisfy. Removed.

Deferred, with reason: the Ninja / cef-dll-sys requirements row, rustup target add x86_64-apple-darwin ("CEF builds a universal binary"), the dev:app / dev:app:win "configures the CEF environment" descriptions, and the MSVC C4819 note. Those are about build tooling, not submodules, and I cannot say from this diff what the Wry shell still needs — whether Ninja is still required on Windows, whether the x86_64 target is still needed on Apple Silicon now that nothing builds a universal Chromium. Answering that means reading the current build scripts, and getting it wrong sends contributors either to install something unnecessary or to skip something still required.

Same stale-CEF surface lives outside this file too — build-desktop.yml's libcef.so/cef-dll-sys prewarm, the CEF cache paths across ci-lite.yml and e2e-reusable.yml, gitbooks/developing/cef.md, and the "Vendored CEF-aware tauri-cli" note in AGENTS.md. Cleaning one file's worth of it inside a CI unblock would leave the docs half-migrated and make this diff harder to justify reverting if it ever needs to be. It is listed under Follow-up PR(s) in the description.

Worth noting the whole class exists because 1843706c3 changed the runtime without the docs; a scoped Wry-docs PR is the right shape for it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@CodeGhost21, agreed. Commit 835fc379 removes the obsolete submodule prerequisite. The remaining CEF-specific build instructions need verification against the current desktop build scripts. They should stay out of this CI-unblock PR.

I will keep this finding unresolved for the scoped Wry documentation cleanup. If no tracked follow-up exists yet, would you like me to open a GitHub issue for it?


✏️ Learnings added
Learnt from: CodeGhost21
Repo: tinyhumansai/openhuman PR: 5474
File: CONTRIBUTING.md:151-151
Timestamp: 2026-08-10T07:29:26.245Z
Learning: For the OpenHuman repository, removal of the orphaned `app/src-tauri/vendor/tauri-cef` and `app/src-tauri/vendor/tauri-plugin-notification` gitlinks does not by itself establish that remaining CEF-specific build-tool instructions are obsolete. Verify current build scripts before changing `CONTRIBUTING.md` guidance for Ninja, `cef-dll-sys`, `rustup target add x86_64-apple-darwin`, desktop command environment setup, or MSVC C4819 troubleshooting. Broader stale-CEF cleanup is intended for a separate scoped Wry documentation follow-up.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

You are interacting with an AI system.

@CodeGhost21

Copy link
Copy Markdown
Contributor Author

CI on this PR confirms the fix, and cleanly separates the two breakages.

Now passing, all four of which failed in Checkout before: Detect Changed Areas, Feature Forwarding Gate, Orchestration IP Gate, Toolchain Image Drift Guard.

Still failing: Rust Quality, Rust Feature-Gate Smoke, Test Inventory, Coverage Matrix Sync, PR Submission Checklist — every one in Initialize containers with manifest unknown, before checkout, i.e. entirely the second cause. PR CI Gate fails as their aggregator. Several of these were skipping before this PR: they are newly reached, not newly broken.

Three findings on that second cause, since I dug into it:

latest is not a usable stopgap. latest and rust-1.93.0 are the same image digest, built 2026-05-02 — the package has had no push since. Repointing the workflows at latest would hand the Rust jobs a 1.93.0 toolchain, which cannot build rusqlite 0.40 / libsqlite3-sys 0.38 (cfg_select!, stable in 1.96). Publishing rust-1.96.1 really is the only way out.

The drift guard cannot catch this class of break. scripts/ci/check-toolchain-image.mjs compares the openhuman_ci:rust-<v> tag in the workflows against rust-toolchain.toml — a file-to-file check. It is green right now, correctly: both say 1.96.1. What nothing asserts is that the tag exists in the registry. So a toolchain bump merges with a green guard and every container job breaks the moment it lands. A docker manifest inspect (or a GHCR versions API call) on the resolved tag inside that same guard would have caught this at the bump.

I cannot dispatch the build. gh workflow run build-ci-image.yml returns HTTP 403: Must have admin rights to Repository — my access is pull/triage only. It also could not have succeeded before this PR: Build CI Image checks out with submodules: recursive and would have died on the same orphaned gitlinks.

So the sequence is: merge this → dispatch Build CI Image → the container jobs go green. Happy to open the drift-guard registry check as a follow-up if that seems worth having.

…submodules

`app/src-tauri/vendor/` has no submodules left after this change, so the
"Tauri vendored sources … required for the CEF-aware Tauri CLI and
notification plugin patches" row names a prerequisite that cannot be
satisfied and is not needed.

The other CEF references in this file (the Ninja / cef-dll-sys row, the
`x86_64-apple-darwin` universal-build target, the `dev:app` CEF-env
descriptions, the MSVC C4819 note) are about build tooling rather than
submodules. Each needs checking against what the Wry shell actually
requires now, which is the separate Wry-cleanup follow-up, not this
CI unblock.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant