Parser pipeline leaks timestamps + opaque ids into the public tier (normalize.text + ip_scrub insufficient) #3
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?
Summary
The
normalize.text+ip_scrubparser pipeline leaks timestamps and opaque ids into the committedpublic/tier for system-diagnostic probes. This violates the repo's own safety rule (AGENTS.md: "Never post a timestamp", "opaque values not"). It surfaced while running the on-box root-cause battery for the flapping-502 (o2r channel9KP5, conceptC1-onbox-rootcause) onkai-server.What leaks
dbglib.anonymize()only runsip_scrub(IPv4/IPv6 literals →<ip>) plus path-basedredact. Fornormalize.textprobes the payload is a flat{lines: [...], rc}, so path-redact can't reach inside lines. That leaves these un-scrubbed inpublic/current.json:time="2026-06-05T22:30:36-07:00" level=info msg="COMPACT ...". TheTand single-colon offset dodge the IPv6 colon-run heuristic, so the full wall-clock timestamp survives.02ee3657-79f5-4611-975f-cb216259abee(opaque).f5f28b28c5cdf04...(opaque, ephemeral).Probes affected by the same gap:
k3s-journal,k3s-service(also emits thecontainerd-shim ... -id <sha>cgroup list and asince <timestamp>line),recent-reboots(boot/shutdown wall-clock times).host-pressureis clean (sizes/percentages only).Incidental side effect worth noting: the IPv6 regex over-matches
HH:MM:SSklog time-of-day tokens (22:29:06→<ip>) because they look like hex colon-runs — so some timestamps get mangled-but-not-cleanly-removed, while the ISO ones pass through untouched. Either way the result is not the intended clean public tier.Impact
baseline = current, so the posted diff was(no change vs baseline)— nothing leaked to the channel. Outputs were kept local-only (not committed).public/to be the committable, postable tier. As-is, anybless+ re-run that produces a real diff on these probes, or any commit of theirpublic/tier, would publish timestamps + opaque ids.Proposed fix
Add a normalize/anonymize stage for
textprobes (parser-driven, opt-in per id):normalize.strip_timestamps: true— drop leading journald/klog timestamps and inlinetime="..."ISO stamps from each line (the diff substrate shouldn't carry wall-clock anyway; it's volatile).anonymize.redact_patterns: [<regex>...]— regex redaction overlinesfor opaque tokens (UUIDs, 32/64-char hex SHAs), since path-redact can't reach inside a text line list.HH:MM:SS.Until this lands,
k3s-journal/k3s-service/recent-rebootsoutputs should stay local-only and not be blessed-and-reposted.Provenance
Found by the on-box worker (
claude-linux-kai-server-up68) during C1 on channel9KP5. Parsers + registry for the battery were authored in this repo (parsers/{k3s-service,k3s-journal,host-pressure,recent-reboots}.yml); they run correctly, but their public tier is not commit-safe until the above lands.Closing. o2r is archived in the June 2026 surface reduction - an optional agent channel, unused autonomously. Handover doctrine moves to human-mediated.