Store raw/normalized tiers in /tmp (out of the repo tree) so leak-prevention doesn't rely on .gitignore #7
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The
raw/andnormalized/tiers hold un-anonymized capture (real IPs, FQDNs, the opaque tailnet suffix). Today they live inside the repo tree atoutputs/<src>__<tgt>/<id>/{raw,normalized}/and are kept out of git only by.gitignore. That makes.gitignorethe single point of failure for a leak: a straygit add -f, an ignore-rule typo, a path rename, or a tool that bypasses ignore rules, and the real values land in committed history (and the GitHub mirror).This already bit us: the ZHQK debug run left the opaque tailnet FQDN in the public tier and required a manual scrub before commit (see #3 and the land commit). The raw tier is the bigger blast radius if it ever escapes.
Proposal
Move the leak-bearing tiers out of the repo tree entirely - write
raw/(andnormalized/) under a/tmp(or$TMPDIR) working dir instead ofoutputs/. Then:git added - they are not under the repo root, so no.gitignoredependency.public/tier stays underoutputs/and is the sole thing git ever sees./tmpraw path re-derives normalized + public the same way - just from outside the repo.Sketch
dbglibgrows araw_root()/work_root()that resolves to e.g.${TMPDIR:-/tmp}/o2r-debug/<src>__<tgt>/<id>/for raw + normalized, whilepublic/stays atoutputs/<src>__<tgt>/<id>/public/.step.py/bless.pyread+write raw and normalized from the work root; public unchanged.raw/+normalized/entries from.gitignoreonce nothing writes them inside the tree (keep a guard so a stray in-tree raw still cannot commit).Tradeoff to note
/tmpis ephemeral - raw is lost on reboot / tmp cleanup, so a parser fix can no longer re-derive from an old capture after the box reboots. That is acceptable: re-deriving across a reboot is rare, and the leak-surface reduction is worth more. Call it out in the README.Done when
outputs/holds onlypublic/..gitignoreto keep un-anonymized capture out of git.Relates to #3 (parser-level anonymization gaps) and #5 (outputs commit boundary).
Closing. o2r is archived in the June 2026 surface reduction - an optional agent channel, unused autonomously. Handover doctrine moves to human-mediated.