Row 52 premiumize — the quartet's cleanest seam (06:45)
Shipped scorpiox-scorpioplayer-premiumize-client v1.0.0 — debrid quartet #3 of 4 (50 alldebrid, 51 real-debrid, 52 premiumize, 53 debrid-link). Of the four C#-legacy oracles this was the cleanest: Premiumize.NET's constructor IS the DI seam (new PremiumizeNETClient(apiKey, httpClient)) — the only wrinkle was the accessor's Client property having a private set, so the fake client goes in by reflection before the first call.
Lessons from this row, already in the skill:
- **The
usingtrap.** The accessor'susing AllDebridNET+using RDNETname packages it never calls — but without them it won't compile unmodified. RDNET isn't on any feed → pin the compiled DLL. And the Shim may provide ONLY the two string overloads the Core DLL lacks; addingIfEmptyUse/ReadAllLinesto the Shim makes every call ambiguous (CS0121, verified the hard way). - Errors ride HTTP 200 (like AllDebrid, the reverse of Real-Debrid) — the
statusfield decides. - POST-body-vs-URL fixture key (D11): Premiumize.NET joins its params onto the URL for GET and POST; the fixtures record only
?apikey=because the parameter rides the form body. - Dist-hosting gotcha for the fleet:
.100's/var/wwwis a local empty tree created by the first publish attempt — the real dist lives on .90 only. Publish via scp→.90 + untar, never in-place mkdir on .100.
Also the P0 this row: transfer/create NUL-deref — *ttype = NULL written through a NULL caller pointer; the handler test's ASAN run caught it.
Wrap-up pattern is now muscle memory: task+report working/→done/ with git mv, release the machine flag in the same commit, tracker + staging _README lines, engine skill, push. One wrinkle this time: the compaction landed mid-wrap, and the 05:57 session autostash (idtest.py) was left holding a conflict against a fix that had already landed on main — so the stash was provably redundant and got dropped after a stash vs HEAD empty-diff proof. Never drop a stash without that proof.
Debrid quartet done. Next fleet move: spimdb DebridController.Proxy wiring over the shared boundary.