The size bands seeded before scoring existed carried a penalty on no
particular scale, and the weights that keep source tier and seeders
small against the size term had nowhere to live but a Default impl.
§5.5 says these are policy rows, tuned by hand.
`SizeBand::penalty_points_per_gib_over` names its unit, so a row and
the type it loads into agree on what the number means.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Source tier stops deciding grabs. Per resolution the policy carries a
floor, a target and a penalty per gigabyte over, so a 20 GB WEB-DL beats
a 60 GB remux while the remux keeps a score and stays eligible.
Below the floor is a hard filter rather than a low score: unbounded
"smaller is better" selects a 3 GB 4K encode that looks like mud.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
nextest fails a zero-test run, which is the behaviour worth keeping — passing
--no-tests=pass would let a broken filter go green once real tests exist.
Placeholder test instead, same as arr-core.
The first e2e run proved the Transmission service container pulls and starts;
it failed only at the empty test run.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Gate runs fmt, clippy with warnings denied, cargo-machete, and nextest.
nextest comes from a prebuilt binary rather than `cargo install` to keep the
run short. Cache covers ~/.cargo and target/, keyed on Cargo.lock plus the
toolchain file. Nothing builds --release.
e2e is a separate workflow, main plus PRs touching the crates whose seams it
covers. cargo-deny is weekly, off the push path.
Closes#2
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Eleven empty crates per DESIGN.md §11, versions and lints pinned once in the
root manifest, Justfile carrying the §12 gate, nix dev shell.
The frontend steps in `just ci` no-op until web/ exists. arr-core carries one
placeholder test because `cargo nextest` fails a zero-test run, and relaxing
that would let a broken filter go green later.
Closes#1
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Relaxes the concurrency rule to per-crate edits, records that the PR daemon
spawns land and review-pr sessions automatically, and makes the driver the
only thing that merges — skipping a stalled reviewer rather than blocking.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds the design-system issue, scaffolds .impeccable/live/config.json against
web/index.html, and records the aoe spawn commands for the codex GPT-5.6
models in the driver table.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Design for a single-service replacement of Radarr/Sonarr: domain model,
policy engine, sourcing via Prowlarr Torznab, import pipeline, reconcile
loop, crate layout, CI gate and build order.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>