Skip to content

feat: add signing trust flows - #536

Merged
Khushboo-dev-cpp merged 1 commit into
masterfrom
feat/install-trust
Nov 3, 2026
Merged

Khushboo-dev-cpp merged 1 commit into
masterfrom
feat/install-trust

Conversation

@Khushboo-dev-cpp

Copy link
Copy Markdown
Collaborator

Summary

Linked issues

Screenshots / recordings

Test plan

  • nix build .#app succeeds
  • nix build .#smoke-test -L passes
  • nix build .#integration-test -L passes (if UI-visible)
  • Doctests pass (nix build .#doctests -L if touched)
  • Manual verification on:
    • Linux (AppImage)
    • Linux (Nix local build)
    • macOS
  • N/A — docs/CI/tooling only

Release notes

Checklist

  • Branch prefixed fix/, feat/, chore/, docs/, test/, or ci/
  • No unrelated changes bundled in
  • CLAUDE.md / README.md / docs/ updated if behaviour or build steps changed
  • Uncommitted binaries, screenshots, or .DS_Store files removed

@status-im-auto

status-im-auto commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Jenkins Builds

Click to see older builds (19)
❔ Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 67760a0 1 2026-11-02 19:21:55 ~5 min linux/x86_64 📦App
✔️ 67760a0 1 2026-11-02 19:26:32 ~9 min macos/aarch64 🍎dmg
✔️ 67760a0 1 2026-11-02 19:32:59 ~16 min linux/aarch64 📦App
✔️ b817df2 2 2026-11-03 08:38:53 ~5 min linux/x86_64 📦App
✔️ b817df2 2 2026-11-03 08:43:54 ~10 min macos/aarch64 🍎dmg
✔️ b817df2 2 2026-11-03 08:49:06 ~15 min linux/aarch64 📦App
✔️ f57ded1 3 2026-11-03 10:44:56 ~5 min linux/x86_64 📦App
✔️ f57ded1 3 2026-11-03 10:49:04 ~9 min macos/aarch64 🍎dmg
✔️ f57ded1 3 2026-11-03 10:54:13 ~14 min linux/aarch64 📦App
✔️ 81e804a 4 2026-11-03 11:38:05 ~5 min linux/x86_64 📦App
✔️ 81e804a 4 2026-11-03 11:47:45 ~14 min linux/aarch64 📦App
✔️ 00a952b 5 2026-11-03 12:45:14 ~6 min linux/x86_64 📦App
✔️ 00a952b 5 2026-11-03 12:52:52 ~14 min linux/aarch64 📦App
✔️ 00a952b 4 2026-11-03 13:13:08 ~34 min macos/aarch64 🍎dmg
✔️ 41b4384 5 2026-11-03 13:23:05 ~9 min macos/aarch64 🍎dmg
✔️ 41b4384 6 2026-11-03 13:28:51 ~15 min linux/aarch64 📦App
✔️ c418ed8 6 2026-11-03 13:50:15 ~6 min linux/x86_64 📦App
✔️ c418ed8 6 2026-11-03 13:52:50 ~8 min macos/aarch64 🍎dmg
✔️ c418ed8 7 2026-11-03 13:59:00 ~15 min linux/aarch64 📦App
❔ Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 26003cc 7 2026-11-03 15:44:06 ~6 min linux/x86_64 📦App
✔️ 26003cc 7 2026-11-03 15:49:05 ~11 min macos/aarch64 🍎dmg
✔️ 26003cc 8 2026-11-03 15:52:51 ~15 min linux/aarch64 📦App
✔️ 75f4ba1 8 2026-11-03 16:12:54 ~6 min linux/x86_64 📦App
✔️ 75f4ba1 8 2026-11-03 16:16:08 ~9 min macos/aarch64 🍎dmg
✔️ 75f4ba1 9 2026-11-03 16:20:08 ~13 min linux/aarch64 📦App

@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

📊 basecamp doc-test reports

This commit of basecamp, built once per OS and driven by each doc-test, rendered alongside the commands/actions actually run and their output (updated each run, commit 1ec50ac):

All reports for this PR

Pages can take a minute to update after the run finishes.

@Khushboo-dev-cpp
Khushboo-dev-cpp force-pushed the feat/install-trust branch 6 times, most recently from 41b4384 to c418ed8 Compare November 3, 2026 13:43
@Khushboo-dev-cpp
Khushboo-dev-cpp marked this pull request as ready for review November 3, 2026 13:43
Each install dialog (Package Manager's install gate and upgrade, App
Manager) says who signed every package the install would bring: the
catalogue's signature for the planned root hash, or package_manager's
verifyPackage of a local file. A damaged or wrongly signed package
can't be installed. "Trust & install" trusts the publisher of the
package the dialog is about, and nobody else, once its key is in the
keyring, and says that what it signs will install without asking;
anything else that isn't trusted installs "anyway". A publisher using a
trusted name with another key, or a name with a word reading as Logos,
is flagged and never offered.

What was judged is what installs. The answer to package_manager_ui
carries the plan, release by release, or a local file's root hash,
signer and SHA-256, and package_manager_ui (bumped to ea0cdda) installs
exactly that. App Manager's own installs are held to the same plan:
every required package fetched and each file signed as approved, or
nothing is installed. package_downloader is bumped to 6dee7e9
(logos-package-downloader#57): a release whose manifest names another
package is never listed, planned or fetched, and a downloaded file must
be the package asked for.

Trust is bounded. A release installs only under the name it is listed
as; a package named like one Basecamp ships, or like a caller the
runtime trusts (core, core_service), installs only if Logos signed it;
an update signed by another publisher than the installed copy asks,
even when that publisher is trusted. Only Basecamp and the Package
Manager's backend may call package_manager and package_downloader (a
capability_module restriction registered before they load, and carried
into an enforce-mode access policy), so no other module can add a key
or install without a dialog; if the restriction can't be registered,
neither module starts.

Settings → Trusted Publishers lists package_manager's keyring
(<baseDirectory>/keyring) with each key's fingerprint and date. Any
publisher, Logos included, can be deleted; future installs from it then
ask first. Only a new keyring gets Logos, so a deleted Logos stays
deleted. Logos's keys are a list (current, older, revoked), checked
before each release (README, "Cutting a release"). A keyring that
can't be read trusts nobody.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Khushboo-dev-cpp
Khushboo-dev-cpp merged commit e617638 into master Nov 3, 2026
74 checks passed
@Khushboo-dev-cpp
Khushboo-dev-cpp deleted the feat/install-trust branch November 3, 2026 18:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants