← Back to list
01Issue
BugClosedSwamp CLIPublic
AssigneesNone
Relationships
#1467 seadex-latent-bugs: latent product bugs pinned by the wave-2b test backfill
Opened by magistr · 7/29/2026
Summary
@magistr/seadex's wave-2b test backfill (ext-quality-bf-seadex) characterized
seadex.ts's already-shipped behavior across five STANDARD.md test suites
without modifying seadex.ts (byte-frozen). The suites pinned the following
latent product bugs as current behavior — none are fixed here; this issue
tracks them for a future fix pass.
Pinned bugs (test file : test name)
- render-upgrades is a permanent no-op. All filter arguments
(year/status/minScore/title) are accepted but silently ignored; every call
writes an identical all-zero summary marker.
(
seadex_methods_test.ts: "render-upgrades: PIN — ... have NO effect on the written marker") - AniList GraphQL-level errors are swallowed as an ordinary no-match. A
{errors:[...], data:null}response at HTTP 200 is indistinguishable from a legitimate "no such anime" —anilistFindIdByTitlenever inspects theerrors[]array. (seadex_adversarial_test.ts: "PIN: an AniList HTTP-200-with-{errors, data:null} response is SWALLOWED...") lookup-many's write phase is not isolated. The per-item try/catch covers fetch + result-building, but the entry-writeResource loop runs afterward, outside that try/catch — one rejected write discards the whole batch and no summary resource is ever written. (seadex_adversarial_test.ts: "PIN (BUG-3): the entry writeResource loop runs OUTSIDE the per-item try/catch...")- No runtime validation of upstream shapes — several dereferences crash
instead of degrading gracefully on hostile/malformed upstream JSON:
- a Pocketbase torrent file's
lengtharriving as a string turnstotalSizeBytesinto a concatenated string (harness-fidelity note: the real runtime's schema would reject this write, which is bug #3 above) - an AniList
Mediaobject present but itstitlekey entirely absent throws an uncaught TypeError - a Pocketbase response missing the
itemskey entirely throws an uncaught TypeError (symmetric to the AniList case) - a 200-OK response with a non-JSON body throws an uncaught SyntaxError,
on both upstream contracts
(
seadex_adversarial_test.ts, several "PIN" tests)
- a Pocketbase torrent file's
- Errored fan-out items are undercounted.
lookup-many's summary lumps a fetch-errored item intonotInSeadexidentically to a legitimately not-found item — there is no separate error tally anywhere in the summary schema. (seadex_adversarial_test.ts: "PIN: an errored lookup-many item is lumped into summary.notInSeadex...") - Duplicate input
anilistIds clobber the same resource key. Two items in onelookup-manycall sharing ananilistIdboth write to the sameal-<id>key (the second clobbers the first in a real datastore), whilesummary.totalstill counts both. (seadex_adversarial_test.ts: "PIN: duplicate anilistId within one lookup-many call writes the SAME al- key TWICE...") - Server-returned
alIDcan diverge from the resource key. The written resource's key is derived from the requested id, but itsalIDcontent field is taken from whatever the server returned — a hostile/buggy Pocketbase response can make these disagree. (seadex_adversarial_test.ts: "PIN: a hostile Pocketbase response whose alID field DIVERGES from the requested filter...") infoHashis never normalized. Case, whitespace, and length are passed through completely verbatim with no validation. (seadex_adversarial_test.ts: "PIN: infoHash is passed through byte-for-byte verbatim...")- Hostile upstream content is echoed verbatim with no redaction — into
both the
notesfield of a written resource and into thrown error messages (up to 200 chars of the raw response body). seadex is credential-less, so this is a trust-boundary/content-integrity concern rather than a credential leak. (seadex_adversarial_test.ts: two "PIN" tests on hostilenotes/ hostile error body) - A malformed
expand.trsarray element (e.g.nullor a non-object entry) would throw an uncaught TypeError innormaliseTorrent— flagged during code review as symmetric to bug #4's crash class but not yet pinned by a dedicated test at the time of filing.
Where this is tracked
None of the above are fixed in ext-quality-bf-seadex — seadex.ts is
byte-frozen there; the suites only characterize (pin) this behavior. This
issue is the tracking home referenced by that change's CHANGELOG.md and PR
description.
02Bog Flow
Closed
No activity in this phase yet.
03Sludge Pulse