Skip to content

docs(f1): nothing may ride along in the desktop bundle, and something must read it - #114

Merged
lessevv merged 1 commit into
mainfrom
docs/f1-desktop-bundle-contents
Sep 13, 2026
Merged

lessevv merged 1 commit into
mainfrom
docs/f1-desktop-bundle-contents

Conversation

@lessevv

@lessevv lessevv commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

What this changes

Two new acceptance criteria on F1 — Desktop shell and packaging, and the narrative section that earns them.

  • F1-R19 — no key material, build credential, or populated database may ship inside a desktop bundle, verified by inspecting the built artefact rather than the exclusion rules.
  • F1-R20 — every job that builds a desktop bundle must read what it built, and must fail both when it finds something and when it finds no bundle to read.

Why

F8-R6 and F8-R7 already state this for a mobile bundle, and the mobile side has mobile:inspect-bundle running on every release. The desktop side had neither the requirement nor the read.

Measured, not inferred. Every published macOS artefact was downloaded from the release page and opened:

release what the bundle carried
v1.0.1-beta, v1.0.3-beta, v1.1.0, v1.1.1, v1.2.0, v1.3.0 vendor/firebase/php-jwt/README.md — a complete BEGIN RSA PRIVATE KEY block (lines 115–141 of that file), plus vendor/brick/money/tools/ecs/

Neither is a secret of this product's: both are fixtures their authors publish openly, and neither is reachable from any autoloader. What earns a requirement is that nothing in the release pipeline read a desktop artefact at all — release.yml has no desktop artefact read of any kind — so the next file to ride along would have been equally invisible.

F1-R20 exists separately because the mobile side learned that half the hard way: a check that cannot tell "found no bundle" from "found a clean bundle" is one that can sit broken indefinitely and look green.

Checks

python3 scripts/integrity.py, manifest_check.py, typos, lychee and markdownlint-cli2 all clean locally.

The implementation PR in beatrax cites F1-R19.

… must read it

Every published desktop release from v1.0.1-beta to v1.3.0 carried a vendored
package's README with a complete PEM private key in its usage example, and a
second package's linting configuration. Neither is a secret of this product's
and neither is autoloaded — what earns them a requirement is that no job in the
release pipeline ever read a desktop artefact, so the next file to ride along
would have been equally invisible.

F8-R6 and F8-R7 already state this for a mobile bundle. F1-R19 states it for
the desktop one, and F1-R20 states the half the mobile side learned the hard
way: a read that cannot tell "found no bundle" from "found a clean bundle" is a
check that can sit broken indefinitely.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Wessel Verheij <info@nightworks.io>
@lessevv
lessevv enabled auto-merge (squash) September 13, 2026 17:53
@github-actions github-actions Bot added documentation Docs only functional awaiting-maintainer Green PR with no review — a maintainer needs to act labels Sep 13, 2026
@lessevv
lessevv merged commit ac5bb47 into main Sep 13, 2026
12 checks passed
@sonarqubecloud

Copy link
Copy Markdown

@github-actions github-actions Bot added awaiting-maintainer Green PR with no review — a maintainer needs to act and removed awaiting-maintainer Green PR with no review — a maintainer needs to act labels Sep 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting-maintainer Green PR with no review — a maintainer needs to act documentation Docs only functional

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant