|
Some checks failed
ci.yml / fix: complete the unpaired-machine sweep + regression test (pull_request) Failing after 0s
Full sweep of every machine_npub deref found one more reachable crash: _record_rejected (tasks.py) logs machine_npub[:12], and the assert_nostr_attribution guard now routes an unpaired machine there, so None[:12] -> TypeError. Fall back to machine.id. Every other deref is safe by the attribution-gate invariant: a settlement only flows past assert_nostr_attribution (now rejecting unpaired) for a paired machine, so the downstream distribution / parse-path / "landed" logs can't see None; the collision-loop display already uses `(m.machine_npub or m.id)`. Adds tests/test_unpaired_machine_guards.py: attribution rejects an unpaired machine with the domain SettlementAttributionError (not AttributeError), and build_state_d_tags skips it. New tests + every guard-affected suite pass. (Two pre-existing test_pair_endpoint failures — #29 drift: fake_pair lacks bunker_relay, and the test DB lacks super_config — are out of scope; filed separately.) |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| conftest.py | ||
| test_calculations.py | ||
| test_cassette_configs.py | ||
| test_cassette_state_consumer.py | ||
| test_collision_guard.py | ||
| test_deposit_currency.py | ||
| test_fee_cap_validation.py | ||
| test_fee_mismatch_recording.py | ||
| test_fee_publish_triggers.py | ||
| test_fee_transport.py | ||
| test_nip44_v2.py | ||
| test_nostr_attribution.py | ||
| test_operator_split_legs.py | ||
| test_pair_endpoint.py | ||
| test_pairing.py | ||
| test_principal_based_fees.py | ||
| test_roster_resolver.py | ||
| test_unpaired_machine_guards.py | ||