Follow-up to #550 (OMNI-2, gbrg/governance/portfolio_position_binding.py), which shipped the typed contract + validator over fixtures binding a book of positions to instruments, issuer entities, and the OMNI-1 omnirisk hierarchy. Two runtime bindings were deliberately left out of scope (contract-only, audit-only) and are tracked here:
1. Live position feed
Replace the static positions fixtures with a feed from the book-of-record (ledger / custody), keyed to instrument identifiers. The binding contract and its conservation/phantom-node teeth stay as the gate; only the source of positions changes from fixture to feed.
2. Entity-resolution runtime binding
Resolve each instrument's issuer_ref against the live regis-entity-graph /resolve/entities endpoint (under entitlement), replacing the by-contract entities roster snapshot.
Constraint carried forward from #550: strictly read-only. Resolve/read only — no writes to the shared HellGraph or any live/shared state. (There was a prior incident with a probe writing to the shared HellGraph off a relayed message; do not repeat.) The runtime binding must go through the ER's opt-in read path only.
See gbrg/docs/ADR-005-portfolio-position-binding.md → Follow-ups.
Follow-up to #550 (OMNI-2,
gbrg/governance/portfolio_position_binding.py), which shipped the typed contract + validator over fixtures binding a book of positions to instruments, issuer entities, and the OMNI-1 omnirisk hierarchy. Two runtime bindings were deliberately left out of scope (contract-only, audit-only) and are tracked here:1. Live position feed
Replace the static
positionsfixtures with a feed from the book-of-record (ledger / custody), keyed to instrument identifiers. The binding contract and its conservation/phantom-node teeth stay as the gate; only the source ofpositionschanges from fixture to feed.2. Entity-resolution runtime binding
Resolve each instrument's
issuer_refagainst the liveregis-entity-graph/resolve/entitiesendpoint (under entitlement), replacing the by-contractentitiesroster snapshot.Constraint carried forward from #550: strictly read-only. Resolve/read only — no writes to the shared HellGraph or any live/shared state. (There was a prior incident with a probe writing to the shared HellGraph off a relayed message; do not repeat.) The runtime binding must go through the ER's opt-in read path only.
See
gbrg/docs/ADR-005-portfolio-position-binding.md→ Follow-ups.