Privacy - ChiefGyk3D/scrum-around-and-find-out GitHub Wiki
Generated from docs/privacy.md at df1dbe1. Edit the repository file, not the wiki.
Privacy check
tests/test_privacy.py scans everything public (docs/, examples/, README.md and agents.yaml) for what must
never be published: private and link-local addresses, MAC addresses, hostnames, machine serials, home-directory paths, file URLs, e-mail addresses,
callsign-shaped tokens and grid squares. The placeholders N0CALL, N0TST and FN31pr are allowed. CI runs these
generic patterns.
Your own terms
Some terms cannot be written into a public repository at all, even as a pattern: an employer's name, a callsign, a grid
square, real hostnames, serial numbers. Keep them in a file outside the repository, one regular expression per line
(blank lines and lines starting with # are ignored), and point the test at it:
install -m 600 /dev/null ~/.config/safo/privacy-terms.txt # then edit it
SAFO_PRIVACY_EXTRA_FILE=$HOME/.config/safo/privacy-terms.txt make check; echo "exit=$?"
The test applies your terms to the same files. A failure prints the file, the line and the category only, never the matched text, so a log or a pasted failure does not repeat the term.
Before publishing the generated profile files
examples/harness/ holds files generated from the profiles in agents.yaml (Agent profiles). The generic
patterns catch a home path or an e-mail address in them. They cannot catch a private handle, an employer term or a
single-label internal hostname, so a release that publishes examples/harness/ runs SAFO_PRIVACY_EXTRA_FILE=... make check first, or an equivalent scan backed by a secret. Generated examples use placeholders only (example.com, N0CALL).
Keeping the file out of Git
- The test refuses a file inside the repository and stops with an error.
.gitignoreexcludesprivacy-terms*and*.privacy-termsin case one is copied in anyway.- Keep the file mode at
600, and do not put it in a dotfiles repository, a backup you publish, or a CI secret. - CI cannot run your terms (that would mean putting them in a secret). The check with your terms is a local one: run it before you push.