Disclosure — "evalroute contribute" (run by hand only) refuses to run unless evalroute.contribute: true is set in config.yaml (or EVALROUTE_CONTRIBUTE=1 for non-Hermes users) and uploads redacted outcome rows only — lane, routed arm, confirmed arm, verdict, method, facet counts, ISO week and an HMAC-SHA256 task hash; never task text, notes, paths, timestamps finer than week, or the salt — to the user's own Hugging Face account's path (contributed/<hf-username>/) in the dataset keppy/evalroute-flywheel using the user's existing huggingface_hub login; "evalroute contribute --dry-run" prints the exact rows that would be uploaded and sends nothing; a per-install salt stays local at <home>/evalroute/contribute.salt and is never uploaded; without the gate the command exits 2 with the one-line fix.
