diff options
| author | Danilo M. <danix@danix.xyz> | 2026-09-09 19:12:41 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-09-09 19:12:41 +0200 |
| commit | 7275db9f81e9995318441807aa0a80022c84d55f (patch) | |
| tree | e814cffcc90ddda0082ee64ce3a57d4600c2b74b /tests/test_cli.py | |
| parent | f17a12003563330b1a57c245ebbd435e97aa73cc (diff) | |
| download | abusectl-7275db9f81e9995318441807aa0a80022c84d55f.tar.gz abusectl-7275db9f81e9995318441807aa0a80022c84d55f.zip | |
fix: derive a destination id from its address, not its position
A positional id names a slot in one run's list, and report may run again on
a case whose contacts have changed since. A newly resolved indicator whose
desk sorts ahead renumbers every desk after it, so bodies/<id>.xarf on disk
comes to belong to a different desk than the manifest entry sharing that id.
The body hash recorded per destination would then compare one desk's body
against another's, reporting an edit nobody made or missing one that was.
Hashing the address makes an id follow the desk. It hashes the same
normalised form the grouping uses, so two spellings of one desk share an id
rather than letting whichever spelling RDAP published first decide a body's
filename. Eight hex chars is a deliberate ceiling: collision probability is
about 1e-8 at ten desks, and a short id keeps a case directory readable to
the person reviewing it.
Also strengthens two tests that passed against trivially wrong code: the
no-address case now asserts alongside a contact that does resolve, so
returning nothing at all is no longer a passing answer, and the two-address
case asserts the ioc lists and distinct ids rather than the sorted targets
alone.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xj1ayFRSUQ2u7cwb3S4axE
Diffstat (limited to 'tests/test_cli.py')
0 files changed, 0 insertions, 0 deletions
