Non-Functional Delta: YU15 over YU14-listed-equity-options
Every inherited non-functional requirement is retained.
Hot pathβ
- NFR-RXT01: The marker SHALL be routed by template id ahead of the order-flow branch and SHALL add
no allocation to the ordinary apply path.
noGcTest,riskNoGcTest, and all four allocation gates stay green. - NFR-RXT01a: The cut render is O(positions) and allocates freely; it is a cold path taken once per EOD batch and is deliberately kept off the order-flow branch.
- NFR-RXT02: Taking an extract SHALL be safe while the cluster is serving traffic. Correctness of the emission is enforced by the quiescence witness, never by stopping the engine.
- NFR-RXT02a: The leader SHALL NOT block the apply thread on the network when publishing the cut.
Determinismβ
- NFR-RXT05: Decimal values SHALL be exact; integer ticks and
BigDecimal, never floating point; so identical inputs cannot produce differing bytes across JVMs or architectures. - NFR-RXT05a: Ordering SHALL be explicit rather than relying on hash or probe iteration order, even where that order is incidentally stable across members.
- NFR-RXT05b: No wall-clock value SHALL appear in the cut or the fixture body. Operational facts about a build belong in the announcement.
- NFR-RXT05c: Text SHALL be US-ASCII with
\nline endings.
Failure behaviorβ
- NFR-RXT03: A failed extract SHALL leave no partial object and no announcement, and SHALL be retried by durable redelivery.
- NFR-RXT03a: Delivery SHALL be write-once, enforced by the sink rather than by a prior existence check, so a redelivered trigger cannot replace a fixture already scored against.
- NFR-RXT04: The producer SHALL tolerate its dependencies being unavailable at start, retrying rather than exiting.
- NFR-RXT04a: The producer SHALL open a cluster session per batch rather than hold one idle between runs, so a leader change during the day cannot leave it pointed at a former leader.
Availabilityβ
- NFR-RXT06: A member restarting during an EOD window; when the cluster is by definition idle; SHALL rejoin the Service without waiting for trading to resume.
Scaleβ
- NFR-RXT07: The cut is carried in one message, bounded by the broker's maximum payload; roughly 15k position rows at the 1MB default. The declared row count is what detects an overrun.