feat: auto-reconcile stale holding mirrors

Closes #94
This commit is contained in:
Hermes Agent
2026-09-14 12:55:04 +09:00
parent adf131f19c
commit c70ac0fb24
19 changed files with 1181 additions and 16 deletions
@@ -60,11 +60,15 @@ def test_run_once_uses_authoritative_core_holdings_broker(monkeypatch):
projected_broker = object()
authoritative_broker = object()
unmanaged_store = object()
auto_store = SimpleNamespace(apply_holding_mirror=lambda _command: False)
captured = {}
def _capture(**kwargs):
captured["broker"] = kwargs["broker"]
captured["unmanaged_position_store"] = kwargs.get("unmanaged_position_store")
captured["portfolio_items"] = kwargs.get("portfolio_items")
captured["cost_basis_port"] = kwargs.get("cost_basis_port")
captured["auto_reconcile_store"] = kwargs.get("auto_reconcile_store")
return {}
monkeypatch.setattr(
@@ -79,12 +83,17 @@ def test_run_once_uses_authoritative_core_holdings_broker(monkeypatch):
slot_repo=object(),
slot_service=SimpleNamespace(instance_key="inst-1"),
unmanaged_position_store=unmanaged_store,
cost_basis_port=read,
auto_reconcile_store=auto_store, # type: ignore[arg-type]
)
sched._reconcile_slots = lambda _items: None
assert sched.run_once() is True
assert captured["broker"] is authoritative_broker
assert captured["unmanaged_position_store"] is unmanaged_store
assert captured["portfolio_items"] == read.items
assert captured["cost_basis_port"] is read
assert captured["auto_reconcile_store"] is auto_store
def test_swap_preserves_warning_for_carried_over_portfolio():