aboutsummaryrefslogtreecommitdiffstats
path: root/docs/specs/2026-09-08-abusectl-design.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-09-09 19:25:12 +0200
committerDanilo M. <danix@danix.xyz>2026-09-09 19:25:12 +0200
commitb0031f905eb63fc76aa6cad0421c4623ebad2b88 (patch)
treed1fe969903fc72a398d151ccc07665f4f5d138f9 /docs/specs/2026-09-08-abusectl-design.md
parent725c8ee4a3dff16c54bae6723a12ca2ef17d7e2f (diff)
downloadabusectl-b0031f905eb63fc76aa6cad0421c4623ebad2b88.tar.gz
abusectl-b0031f905eb63fc76aa6cad0421c4623ebad2b88.zip
feat: build the human-readable part of a report
The ask goes first, only this desk's own indicators appear, and the redaction note is unconditional: a desk seeing REDACTED with no explanation may read the report as doctored. Nothing is truncated. The plan cut three lines with a [:72] slice and left the indicator list unwrapped, which is the same defect twice: a cut URL is a WRONG indicator rather than a short one, and a desk acting on the first 72 characters acts on a resource nobody reported. Long values are divided with an explicit trailing-backslash continuation instead, and unwrap() is the exact inverse, so the tests assert reassembly rather than mere presence. That is what rules out a truncation passing as a wrap. Origins are mapped to English. "header-list_unsubscribe" is a parser's vocabulary and reads as debug output; an origin the table does not know is shown as-is, because losing the only line saying where an indicator came from is worse than showing an ugly token. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xj1ayFRSUQ2u7cwb3S4axE
Diffstat (limited to 'docs/specs/2026-09-08-abusectl-design.md')
0 files changed, 0 insertions, 0 deletions