Files
felhom.eu/documentation/audits/usenet-2026-10-12/tools/boxstep_sabnzbd_again.py
T
admin 52615d9139
gates / gates (push) Successful in 6m34s
Website + evidence: the Usenet pair (R-988 closed), and the drill route filed as R-989
The catalog published SABnzbd and NZBGet today (app-catalog 8ee687e). Here:

- two cards in the media category on both language sets, each with the project's own logo and
  each saying IN BOLD that a paid Usenet subscription is the household's own
- the published count 60 -> 62 everywhere it is stated; the category badges are derived from
  the cards now (media read 15 with 17 cards, otthon/home read 14 with 16 — both stale)
- documentation/audits/usenet-2026-10-12/: both bench runs, both box steps and verdicts, the
  nine defects with their measurements, what a missing provider left unmeasured, the teardown
- R-988 closed (moved to CLOSED-ITEMS in this commit); R-989 filed: the drill-catalog route of
  09 §6.5 cannot be followed — that repo is private and no box has catalog credentials, so the
  templates were staged in the box's own catalog cache instead
- walk.app_env: a SECRET field in app.yaml is stored ENC:, so that helper returns ciphertext —
  the docstring says so now, measured the hard way
- STATUS.md and REPORT-usenet-2026-10-12.md

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0117kRTSgs3rJWUFGxyoWN6Y
2026-10-12 22:58:59 +02:00

55 lines
2.0 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""SABnzbd's box step, run again after the fixture was fixed.
The first attempt could not seed: `walk.GENERATED` holds no optional `type: secret` field, so the
fixture had no API key (the controller generates that one itself). The fixture reads it from the
app's own app.yaml now - the same place the household reads it.
The app is already installed at the TO pin from that attempt, so the step starts by removing it and
staging the FROM pin again: a ladder step has to begin where a household begins.
"""
import json
import os
import sys
import time
HERE = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, HERE)
sys.path.insert(0, "/mnt/5_hdd/felhom.eu/git/felhom.eu/documentation/audits/pg-last-six-2026-09-30/tools")
sys.path.insert(0, "/mnt/5_hdd/felhom.eu/git/app-catalog-felhom.eu/scripts")
os.environ.setdefault("SC", "/tmp/usenet-walk")
import walk as w # noqa: E402
import boxwalk_usenet as bw # noqa: E402
import boxstep_usenet as bs # noqa: E402
APP, SUB = "sabnzbd", "usenet"
w.login()
st = w.stack(APP)
if st.get("deployed"):
w.say("removing the install from the first attempt (a ladder step starts where a household starts)")
w.remove(APP)
time.sleep(5)
w.say("staging the FROM pin again")
import stage_in_cache as stage # noqa: E402
stage.stage("frm")
time.sleep(5)
ok = w.deploy(APP, SUB, extra_values={"HDD_PATH": bw.DRIVE_ROOT})
w.say(f"deploy -> {ok}")
if not ok:
raise SystemExit("the install did not succeed")
w.say(f"the app answers: {w.wait_app(SUB, '/', want=('200', '303', '401', '403'), tries=40, delay=5)}")
# the key the household was given, read the way the fixture now reads it
import upgrade_fixtures_box as fxb # noqa: E402
fx = fxb.FIXTURES[APP]
w.say(f"the API key is readable: {bool(fx._key(w))} (length {len(fx._key(w))})")
v = bs.step(APP)
json.dump(v, open(os.path.join(bs.EV, "box-steps-sabnzbd.json"), "w"), indent=2, ensure_ascii=False)
print(json.dumps(v, indent=2, ensure_ascii=False))