Files
Panama/tests/contracts.manifest
T
Gabriel Brown cb305f6662 Install ChatGPT Desktop from a repository this checkout can verify
OpenAI ships an official Linux RPM now, so the community wrapper goes away:
`panama app chatgpt-desktop` built codex-desktop from the upstream macOS disk
image and ran a local rebuild daemon to keep it current, and the official
package comes from a repository that upgrades with everything else. The app
file, the help example and the dock's pinned id all move over, and a migration
replaces the build on machines that already have it -- official package on
before the community one comes off, so a failure part-way still leaves an app.

The install itself does not follow upstream's instructions. Those are "download
this RPM and install it", and the RPM's own root scriptlet is what writes the
repository file and drops the signing key into /etc/pki/rpm-gpg -- so root runs
an unverified download and then learns from it what to trust. That is the shape
the repository audit forbids: no network response is executed as root without a
verified digest or signature first.

OpenAI publishes no key and no fingerprint anywhere an install could fetch and
check them, so the key is pinned here instead. setup/keys/ carries it and says
where it came from, including the honest part -- this is trust established on
first use and then held, not trust verified against the publisher. setup/lib/
chatgpt-package verifies that copy's fingerprint, installs it, and writes the
repository with gpgcheck and repo_gpgcheck on before anything is installed, so
dnf checks the metadata signature and the package signature itself. It is byte
for byte the repository the scriptlet would have written, so nothing churns
afterwards, and every later upgrade goes through the same key. Both callers use
it; a verification failure skips ChatGPT rather than installing it anyway.

The contract proves the pinned key is the key the library names, that a
missing, unreadable or mismatched key writes nothing at all, that what is
written actually turns the checks on, and that neither caller hands root a
downloaded RPM.

Claude-Session: https://claude.ai/code/session_017zzbtfnMLoYrB8WesqANFY
2026-08-27 14:48:20 -04:00

280 lines
15 KiB
Plaintext

# Contract capability manifest.
#
# Every path collected by `panama test` appears once. `hermetic` contracts use
# only isolated fixtures or source inspection; other entries name the live
# boundary they reach, with the immediately preceding comment stating its effect.
# `privileged` is supported for future contracts but has no current entry.
hermetic tests/hypr/gestures-contract
hermetic tests/hypr/hypr-prefs-contract
hermetic tests/hypr/idle-config-contract
hermetic tests/hypr/idle-defaults-contract
# Reloads and reads the live Hyprland keybind categories from the compositor.
live-compositor tests/hypr/keybind-categories-contract
hermetic tests/hypr/prefs-fallback-contract
hermetic tests/hypr/session-teardown-contract
hermetic tests/hypr/window-rules-contract
hermetic tests/hypr/workspace-rules-contract
hermetic tests/quickshell/accent-controls-contract
hermetic tests/quickshell/accessibility-contract
# Pushes a fixture privacy state into the running shell and opens the activity
# panel over the desktop.
live-compositor,live-desktop tests/quickshell/activity-indicator-contract
# Pushes fixture privacy states and Signal Glass events into the running shell,
# and dismisses the live capsule.
live-desktop tests/quickshell/activity-state-contract
# Reads the host GNOME accent enum through gsettings to verify Panama's accent
# mapping.
live-host tests/quickshell/adwaita-accent-contract
hermetic tests/quickshell/agent-usage-contract
hermetic tests/quickshell/app-library-contract
# Reads the host PipeWire application-volume state through the live Quickshell
# service.
live-host tests/quickshell/application-volume-contract
hermetic tests/quickshell/applications-settings-contract
hermetic tests/quickshell/bar-visibility-contract
hermetic tests/quickshell/battery-contract
hermetic tests/quickshell/bluetooth-discovery-contract
hermetic tests/quickshell/brightness-helper-contract
# Opens the live agenda popover and notification centre, and starts a real focus
# session on the running shell.
live-compositor,live-desktop tests/quickshell/calendar-agenda-contract
# Queries the host calendar helper for real configured sources and upcoming
# events.
live-host tests/quickshell/calendar-agenda-helper-contract
hermetic tests/quickshell/calendar_agenda_bridge_test.py
# Opens and closes the cheatsheet overlay on the running shell.
live-compositor,live-desktop tests/quickshell/cheatsheet-contract
# Reads the host Quickshell networking type metadata to verify the live
# NetworkManager boundary.
live-host tests/quickshell/connectivity-contract
hermetic tests/quickshell/containers-contract
# Maps the Control Center and reads its live compositor layer to verify the
# window is present.
live-compositor,live-desktop tests/quickshell/control-center-contract
# Maps the Control Center service surface and reads the live compositor while
# exercising its IPC services.
live-compositor,live-desktop tests/quickshell/control-center-services-contract
hermetic tests/quickshell/curated-events-policy-contract
hermetic tests/quickshell/declared-assets-contract
hermetic tests/quickshell/declared-dependencies-contract
hermetic tests/quickshell/default-apps-contract
# Reads the host xdg-mime default handlers for the configured application
# families.
live-host tests/quickshell/default-apps-family-contract
# Changes the real default browser through the default-apps helper -- xdg-mime
# and xdg-settings defaults on this machine -- and puts it back.
live-desktop tests/quickshell/default-apps-roles-contract
hermetic tests/quickshell/desktop-style-contract
# Reads the host disk and filesystem snapshot through the production disks
# helper.
live-host tests/quickshell/disks-contract
# Maps the display-arrangement surface and measures its live desktop geometry.
live-desktop tests/quickshell/display-arrangement-contract
hermetic tests/quickshell/display-layout-contract
hermetic tests/quickshell/display-transaction-contract
# Changes the real monitor's mode, position, scale and rotation through the live
# compositor, restoring the display it started from.
live-compositor,live-desktop tests/quickshell/displays-contract
hermetic tests/quickshell/dock-pins-contract
# Reads the live dock window geometry to verify its mapped position.
live-desktop tests/quickshell/dock-position-contract
# Reads Hyprland option descriptions from the live compositor to verify enum
# mappings.
live-compositor tests/quickshell/enum-hypr-map-contract
hermetic tests/quickshell/fingerprint-contract
# Reads the host firewall state through the production firewall helper.
live-host tests/quickshell/firewall-contract
hermetic tests/quickshell/focus-modes-contract
# Starts, pauses, reveals and ends a real focus session, and opens Mission
# Control on the running shell.
live-compositor,live-desktop tests/quickshell/focus-session-contract
# Restarts panama-quickshell.service (or `qs kill`s the shell when unsupervised)
# with a focus session in flight; an interrupted run leaves caffeine latched on.
live-desktop tests/quickshell/focus-session-expiry
# Restarts panama-quickshell.service (or `qs kill`s the shell when unsupervised)
# mid-session to prove a paused focus session survives it.
live-desktop tests/quickshell/focus-session-restart
# Reads the host gaming and graphics state through the production helper.
live-host tests/quickshell/gaming-contract
hermetic tests/quickshell/gnome-handoff-contract
hermetic tests/quickshell/gtk-theme-contract
hermetic tests/quickshell/health-service-contract
# Maps the Health UI test-shell surface to exercise desktop window integration.
live-desktop tests/quickshell/health-ui-contract
hermetic tests/quickshell/home-assistant-config-contract
# Probes the configured Home Assistant endpoint over the network.
network tests/quickshell/home-assistant-helper-contract
hermetic tests/quickshell/home-brightness-slider-contract
hermetic tests/quickshell/home-preferences-contract
hermetic tests/quickshell/home_assistant_bridge_test.py
hermetic tests/quickshell/ipc-targets-contract
hermetic tests/quickshell/kdeconnect-helper-contract
hermetic tests/quickshell/kdeconnect_bridge_test.py
# Reloads the live Hyprland keybind configuration to verify rebinding behavior.
live-compositor tests/quickshell/keybind-rebind-contract
# Reads the live Hyprland bind list to verify every compositor binding is shown.
live-compositor tests/quickshell/keybinds-contract
hermetic tests/quickshell/keyring-helper-contract
hermetic tests/quickshell/layer-margin-contract
hermetic tests/quickshell/lock-screen-helper-contract
hermetic tests/quickshell/lock-screen-service-contract
hermetic tests/quickshell/lock-screen-settings-contract
hermetic tests/quickshell/lock-screen-theme-contract
hermetic tests/quickshell/manual-contract
hermetic tests/quickshell/migrations-contract
# Maps the My Home Settings surface and reads the live compositor during the
# settings flow.
live-compositor,live-desktop tests/quickshell/my-home-settings-contract
hermetic tests/quickshell/network-tools-contract
hermetic tests/quickshell/notification-app-rules-contract
hermetic tests/quickshell/online-accounts-contract
hermetic tests/quickshell/osd-helper-contract
hermetic tests/quickshell/osd-model-contract
hermetic tests/quickshell/osd-ui-contract
hermetic tests/quickshell/overview-keyboard-contract
# Spawns a real kitty window, moves it between your workspaces and into the
# scratchpad, and opens the overview.
live-compositor,live-desktop tests/quickshell/overview-live-actions
# Opens the overview on the running shell and types a search into it.
live-compositor,live-desktop tests/quickshell/overview-search-contract
hermetic tests/quickshell/overview-thumbnail-contract
# Queries the live Quickshell overview-actions IPC surface for window action
# availability.
live-host tests/quickshell/overview-window-actions-contract
hermetic tests/quickshell/palette-contract
hermetic tests/quickshell/panama-action-contract
# Toggles the live caffeine inhibitor and Night Light on the running shell.
live-desktop tests/quickshell/panama-action-ipc-contract
hermetic tests/quickshell/panama-agent-contract
hermetic tests/quickshell/panama-command-install-contract
hermetic tests/quickshell/panama-commands-contract
hermetic tests/quickshell/panama-doctor-contract
hermetic tests/quickshell/per-screen-surface-contract
hermetic tests/quickshell/permissions-contract
hermetic tests/quickshell/phone-messages-contract
# Maps the Phone page test-shell surface and reads the live compositor during
# the page flow.
live-compositor,live-desktop tests/quickshell/phone-page-contract
# Reads the host polkit-agent installation and session service configuration.
live-host tests/quickshell/polkit-agent-contract
hermetic tests/quickshell/polkit-reason-contract
hermetic tests/quickshell/power-page-contract
hermetic tests/quickshell/power-profile-contract
hermetic tests/quickshell/powermenu-contract
hermetic tests/quickshell/preference-schema-contract
# Reads the host printer state through the production printer helper.
live-host tests/quickshell/printers-contract
hermetic tests/quickshell/prism-gallery-contract
hermetic tests/quickshell/privacy-traces-contract
hermetic tests/quickshell/qmldir-registration-contract
# Reads live Hyprland option JSON from the compositor to verify schema shape.
live-compositor tests/quickshell/schema-hypr-shape-contract
# Opens and closes the live overview.
live-compositor,live-desktop tests/quickshell/scratchpad-shelf-contract
# Opens the live screen-intelligence and capture overlays and runs an analysis
# through them.
live-desktop tests/quickshell/screen-intelligence-contract
hermetic tests/quickshell/screen-intelligence-helper-contract
hermetic tests/quickshell/search-routing-contract
hermetic tests/quickshell/secrets-contract
hermetic tests/quickshell/settings-backup-contract
hermetic tests/quickshell/settings-backup-live-contract
hermetic tests/quickshell/settings-buttons-contract
hermetic tests/quickshell/settings-commit-reset-contract
hermetic tests/quickshell/settings-docs-contract
hermetic tests/quickshell/settings-hardcoded-values-contract
# Flips real compositor policy -- gaps, blur, inactive opacity, keyboard layout
# -- on the live compositor and restores it.
live-compositor,live-desktop tests/quickshell/settings-hyprland-write-contract
hermetic tests/quickshell/settings-idiom-contract
hermetic tests/quickshell/settings-jump-contract
hermetic tests/quickshell/settings-nav-contract
hermetic tests/quickshell/settings-ownership-contract
# Maps Settings pages through a test shell and reads the live compositor during
# page routing.
live-compositor,live-desktop tests/quickshell/settings-pages-contract
hermetic tests/quickshell/settings-preferences-contract
hermetic tests/quickshell/settings-search-contract
hermetic tests/quickshell/settings-sidebar-layout-contract
hermetic tests/quickshell/settings-sync-contract
# Applies compositor policy through the production write path against the live
# compositor, and writes preferences to the real settings store (no isolated
# config home).
live-compositor,live-desktop tests/quickshell/settings-system-contract
hermetic tests/quickshell/settings-titlebar-contract
# Opens the real Settings window, routes it between pages, and closes it through
# the compositor.
live-compositor,live-desktop tests/quickshell/settings-window-contract
# Flips every compositor-backed setting to a value it does not hold, one at a
# time, on the live compositor.
live-compositor,live-desktop tests/quickshell/settings-write-sweep-contract
# Reads the host sharing-service snapshot through the production helper.
live-host tests/quickshell/sharing-contract
# Publishes a critical fixture event into the live Signal Glass capsule.
live-compositor,live-desktop tests/quickshell/signal-glass-contract
# Reads the host snapshot state through the production snapshots helper.
live-host tests/quickshell/snapshots-contract
hermetic tests/quickshell/sound-cards-contract
hermetic tests/quickshell/sound-defaults-contract
# Reads the host PipeWire device state through Quickshell's live audio service.
live-host tests/quickshell/sound-page-contract
hermetic tests/quickshell/sound-routing-contract
# Reads the host SSH-agent and key-management availability while keeping test
# keys in a throwaway home.
live-host tests/quickshell/ssh-keys-contract
# Publishes fixture events into the live capsule and toggles Do Not Disturb.
live-desktop tests/quickshell/status-events-contract
# Drives the live window switcher and commits a switch, which moves your focus.
live-compositor,live-desktop tests/quickshell/switcher-contract
hermetic tests/quickshell/theme-catalog-contract
hermetic tests/quickshell/theme-profiles-contract
# Reads the host package-update snapshot through the production updates helper.
live-host tests/quickshell/updates-contract
# Reads the host AccountsService snapshot of local user accounts.
live-host tests/quickshell/user-accounts-contract
hermetic tests/quickshell/video-wallpaper-contract
hermetic tests/quickshell/vpn-contract
hermetic tests/quickshell/wallpaper-policy-contract
hermetic tests/quickshell/wallpaper-service-contract
hermetic tests/quickshell/wallpaper-settings-contract
# Opens and closes the welcome overlay on the running shell.
live-compositor,live-desktop tests/quickshell/welcome-contract
hermetic tests/quickshell/wifi-qr-contract
hermetic tests/quickshell/xkb-presets-contract
hermetic tests/server/compose-secrets-contract
hermetic tests/server/containers-shape-contract
hermetic tests/server/panama-server-contract
hermetic tests/setup/apps-contract
hermetic tests/setup/boot-contract
hermetic tests/setup/chatgpt-package-contract
hermetic tests/setup/contract-manifest-contract
hermetic tests/setup/crash-watch-contract
hermetic tests/setup/desktop-first-contract
hermetic tests/setup/dictation-contract
hermetic tests/setup/dotfile-classification-contract
# Contacts the configured package sources through dnf and Flathub availability
# checks.
network tests/setup/extras-contract
hermetic tests/setup/firefox-chrome-contract
hermetic tests/setup/hardware-contract
# Reads the host hardware predicates after exercising fixture sysfs trees.
live-host tests/setup/hardware-predicates-contract
hermetic tests/setup/hooks-contract
hermetic tests/setup/interview-contract
hermetic tests/setup/launch-or-focus-contract
hermetic tests/setup/launcher-commands-contract
hermetic tests/setup/launcher-search-contract
hermetic tests/setup/lid-contract
hermetic tests/setup/migrations-contract
hermetic tests/setup/nautilus-extensions-contract
hermetic tests/setup/package-lists-contract
hermetic tests/setup/projects-contract
hermetic tests/setup/readme-contract
hermetic tests/setup/role-contract
hermetic tests/setup/skills-contract
hermetic tests/setup/test-runner-contract
hermetic tests/setup/update-command-contract
hermetic tests/setup/user-content-contract
hermetic tests/setup/webapp-contract