Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
156 commits
Select commit Hold shift + click to select a range
9d42d69
fix(v2): bound query cache readiness probe
BobbyAxerol Sep 1, 2026
de4aca8
fix(v2): avoid spool aggregate on reader startup
BobbyAxerol Sep 1, 2026
bba838e
fix(v2): skip stable cache integrity scan on open
BobbyAxerol Sep 1, 2026
36914d2
fix(v2): avoid retention index rebuild on open
BobbyAxerol Sep 1, 2026
631d694
fix(v2): bound projector cache bootstrap
BobbyAxerol Sep 1, 2026
b4b80a9
fix(sdk): publish current V2 contract patch artifact
BobbyAxerol Sep 1, 2026
131ea29
docs(plan): record V2 query readiness runtime evidence
BobbyAxerol Sep 1, 2026
7d78037
feat(v2): materialize broad alpha read entitlements
BobbyAxerol Sep 1, 2026
41e81a9
docs(plan): define alpha v2 production rollout
BobbyAxerol Sep 1, 2026
dc4ca8e
docs(plan): record v2 alpha source gate
BobbyAxerol Sep 1, 2026
5cf8e21
docs(plan): close v2 alpha phase a on dev
BobbyAxerol Sep 1, 2026
ee002b1
feat(consumer): compile config-derived alpha bindings
BobbyAxerol Sep 1, 2026
1f654dc
docs(plan): close phase b dev integration
BobbyAxerol Sep 1, 2026
6967573
docs(plan): record phase b cleanup
BobbyAxerol Sep 1, 2026
8db07ea
docs(release): define canonical reader handoff
BobbyAxerol Sep 1, 2026
95f84cd
feat(release): seal config-derived reader bundle
BobbyAxerol Sep 1, 2026
d619be6
fix(release): seal reader rollback selector
BobbyAxerol Sep 1, 2026
dce9d05
docs(plan): close canonical reader handoff
BobbyAxerol Sep 1, 2026
963939d
docs(plan): activate v2 alpha consumer rollout
BobbyAxerol Sep 1, 2026
e235f84
docs(plan): record v2 alpha source convergence
BobbyAxerol Sep 1, 2026
8cd3d72
docs(plan): close v2 alpha source convergence
BobbyAxerol Sep 1, 2026
66792e1
docs(plan): record v2 rollout worktree cleanup
BobbyAxerol Sep 1, 2026
4b49efe
docs(plan): record alpha binding compiler proof
BobbyAxerol Sep 1, 2026
531ea2d
docs(plan): record phase b integration candidate
BobbyAxerol Sep 1, 2026
42f966c
fix(v2): align durable bar history with alpha warmup
BobbyAxerol Sep 1, 2026
3c5099c
docs(v2): close alpha binding source integration
BobbyAxerol Sep 1, 2026
be59ac8
fix(v2): add reader healthchecks
BobbyAxerol Sep 1, 2026
96219ab
docs(v2): close alpha reader rollout
BobbyAxerol Sep 1, 2026
32a48e1
docs(v2): authorize full alpha consumer rollout
BobbyAxerol Sep 1, 2026
e824ea0
docs(v2): close alpha source convergence
BobbyAxerol Sep 1, 2026
b172967
docs(v2): close config-derived alpha bindings
BobbyAxerol Sep 1, 2026
48203ea
docs(v2): record reader release handoff
BobbyAxerol Sep 1, 2026
03edcc1
docs(v2): journal paired alpha no-order preflight
BobbyAxerol Sep 1, 2026
f92bde6
docs(v2): record signed cursor source gate
BobbyAxerol Sep 1, 2026
5df5cfb
docs(v2): record no-order risk reread gate
BobbyAxerol Sep 1, 2026
29639f8
fix(v2): preserve shared bar baseline for alpha demand
BobbyAxerol Sep 1, 2026
61d33a4
docs(v2): record dev source revalidation
BobbyAxerol Sep 1, 2026
37eda44
docs(v2): close alpha source convergence
BobbyAxerol Sep 1, 2026
5edbc8c
docs(v2): close alpha config binding phase
BobbyAxerol Sep 1, 2026
c1d4cae
docs(plan): journal alpha v2 rollout
BobbyAxerol Sep 2, 2026
021b372
fix(reference): preserve period-start finality
BobbyAxerol Sep 2, 2026
beb3858
docs(plan): record reference reader candidate
BobbyAxerol Sep 2, 2026
136c52e
fix(release): expose sealed alpha bindings safely
BobbyAxerol Sep 2, 2026
5097558
fix(identity): materialize non-root alpha mounts
BobbyAxerol Sep 2, 2026
a3f423d
fix(reference): preserve settled funding boundaries
BobbyAxerol Sep 2, 2026
d59c2cd
docs(plan): record settled reference acceptance
BobbyAxerol Sep 2, 2026
e7bd1db
docs(plan): authorize alpha v2 rollout execution
BobbyAxerol Sep 2, 2026
7b47ade
docs(plan): close alpha v2 source convergence
BobbyAxerol Sep 2, 2026
55b08e8
fix(core): restore declared Python 3.10 support
BobbyAxerol Sep 2, 2026
3e3b792
fix(release): pin reader rollback per role
BobbyAxerol Sep 2, 2026
a04c899
docs(plan): pin canonical reader rollout packet
BobbyAxerol Sep 2, 2026
6962966
fix(release): render valid reader compose overrides
BobbyAxerol Sep 2, 2026
62dcfce
docs(plan): record canonical reader handoff
BobbyAxerol Sep 2, 2026
db7e225
docs(plan): record alpha final bar policy repair
BobbyAxerol Sep 2, 2026
940fef9
docs(plan): record Phase D projector and alpha proof
BobbyAxerol Sep 2, 2026
0a122a8
fix(l2): decouple verified snapshot materialization
BobbyAxerol Sep 2, 2026
6783d4b
fix(runtime): bound stable core dedup memory
BobbyAxerol Sep 2, 2026
f80835f
docs(plan): close Phase D grid L2 proof
BobbyAxerol Sep 2, 2026
634f6b4
docs(plan): record Phase D cleanup evidence
BobbyAxerol Sep 2, 2026
1d93396
fix(v2): bind consumer JWT generation
BobbyAxerol Sep 2, 2026
1f64da7
fix(reference): stamp receipt after provider fetch
BobbyAxerol Sep 2, 2026
b8df20c
docs(plan): record reader repair rollout
BobbyAxerol Sep 2, 2026
322f156
fix(runtime): converge v2 primary bindings
BobbyAxerol Sep 2, 2026
7d9d5d4
fix(ingest): report fenced authority mode
BobbyAxerol Sep 2, 2026
81c3d53
docs(plan): record authority image rollout
BobbyAxerol Sep 2, 2026
40b7165
fix(reference): refresh stale cached snapshots
BobbyAxerol Sep 2, 2026
30b0d91
fix(reference): preserve freshness through shared batches
BobbyAxerol Sep 2, 2026
e634b95
fix(reference): refresh aged batch snapshots at assembly
BobbyAxerol Sep 2, 2026
09e5d03
fix(v2): admit quiet verified book deltas by session
BobbyAxerol Sep 2, 2026
631433d
docs(plan): record quiet delta reader handoff
BobbyAxerol Sep 2, 2026
91a3d7b
docs(plan): record quiet reader rollout
BobbyAxerol Sep 2, 2026
287dced
docs(plan): record DOGE bar continuity repair
BobbyAxerol Sep 2, 2026
0b1b7fc
docs(plan): record DOGE bar repair evidence
BobbyAxerol Sep 2, 2026
43faf3d
fix(sdk): admit quiet verified book deltas
BobbyAxerol Sep 2, 2026
261f7ec
fix(runtime): rematerialize union final-bar ownership
BobbyAxerol Sep 2, 2026
358441f
fix(cert): honor declared reference deadline
BobbyAxerol Sep 2, 2026
413683a
fix(v2): admit governed long final-bar freshness
BobbyAxerol Sep 2, 2026
f60f747
fix(cert): bound durable BAR acceptance horizon
BobbyAxerol Sep 2, 2026
27dd967
fix(cert): align C2 with durable bar capacity
BobbyAxerol Sep 2, 2026
95e5e58
fix(cert): honor book snapshot renewal SLA
BobbyAxerol Sep 2, 2026
d9dea34
fix(v2): derive durable spool capacity from catalog
BobbyAxerol Sep 2, 2026
f3d8a10
docs(plan): record v2 cache capacity rollout
BobbyAxerol Sep 2, 2026
7352a1a
fix(v2): bound projector catch-up memory
BobbyAxerol Sep 2, 2026
8dda86c
docs(plan): record projector memory rollout
BobbyAxerol Sep 2, 2026
57531f6
docs(plan): record C2 launcher correction
BobbyAxerol Sep 2, 2026
0cfdc1e
fix(c2): separate replay state from live execution
BobbyAxerol Sep 2, 2026
bb708c9
docs(plan): record immutable c2 client gate
BobbyAxerol Sep 2, 2026
b8a577a
docs(plan): record c2 runner preflight
BobbyAxerol Sep 2, 2026
ae070d4
fix(c2): unwrap strict snapshot responses
BobbyAxerol Sep 2, 2026
af2e1c6
docs(plan): record c2 snapshot client artifact
BobbyAxerol Sep 2, 2026
6fecc6b
fix(c2): preserve typed snapshot envelopes
BobbyAxerol Sep 2, 2026
e992566
docs(plan): record final c2 client gate
BobbyAxerol Sep 2, 2026
95142bd
fix(c2): honor provider bar calendar anchors
BobbyAxerol Sep 2, 2026
5aaa8bd
docs(plan): record calendar c2 client gate
BobbyAxerol Sep 2, 2026
02f0afb
fix(c2): separate restored cursor from live frames
BobbyAxerol Sep 2, 2026
e467b61
docs(plan): record cursor c2 client gate
BobbyAxerol Sep 2, 2026
e2ff39a
docs(plan): record doge bar gap diagnosis
BobbyAxerol Sep 2, 2026
ca4eab5
fix(v2): repair bounded final bar history gaps
BobbyAxerol Sep 2, 2026
2b8690b
fix(v2): decouple bounded history repair from warmup
BobbyAxerol Sep 2, 2026
a41c596
docs(plan): record provider-backed doge repair fence
BobbyAxerol Sep 2, 2026
1994258
fix(v2): retain bounded late backfill headroom
BobbyAxerol Sep 2, 2026
8a0039c
docs(plan): record projector capacity rollout packet
BobbyAxerol Sep 2, 2026
9e3a99f
fix(v2): align durable bar coverage with spool tail
BobbyAxerol Sep 2, 2026
f9c27e7
fix(v2): preserve late bar backfills in reader warmup
BobbyAxerol Sep 2, 2026
7cd0265
fix(c2): revalidate historical bar replay at current snapshot
BobbyAxerol Sep 2, 2026
a497ab0
fix(c2): revalidate stale initial stream frames
BobbyAxerol Sep 2, 2026
ae164f5
docs(plan): record C2 client artifact gate
BobbyAxerol Sep 3, 2026
8620303
fix(c2): pace consumer acceptance within manifest quotas
BobbyAxerol Sep 3, 2026
5ba4ff1
fix(c2): attest quiet historical bar handoff
BobbyAxerol Sep 3, 2026
3d73891
fix(c2): use current bar handoff boundary
BobbyAxerol Sep 3, 2026
ce530ef
fix(bar-edge): verify durable history behind checkpoints
BobbyAxerol Sep 3, 2026
82b4830
perf(bar-edge): bound checkpoint coverage reads
BobbyAxerol Sep 3, 2026
10bb4c6
fix(c2): retry transient reader sessions within deadline
BobbyAxerol Sep 3, 2026
8ba4165
fix(bar-edge): rebootstrap after live cache rebuild
BobbyAxerol Sep 3, 2026
07e0ac0
fix(recovery): bound live projector lag per partition
BobbyAxerol Sep 3, 2026
17d9449
fix(v2): enable additive reader client trust
BobbyAxerol Sep 3, 2026
f2e5654
fix(c2): honor trade requirements without session sla
BobbyAxerol Sep 3, 2026
1c135af
fix(c2): serialize native basis receipt lane
BobbyAxerol Sep 3, 2026
5875d35
fix(realtime): retain generation on transient receive errors
BobbyAxerol Sep 4, 2026
8079157
docs(plan): record C2 receive recovery rollback
BobbyAxerol Sep 4, 2026
f5b14f1
fix(reference): recover transient stale mark snapshots
BobbyAxerol Sep 4, 2026
12d06a3
docs(plan): record mark index C2 rollback
BobbyAxerol Sep 4, 2026
a8fdb55
fix(c2): pace stream opens by consumer quota
BobbyAxerol Sep 4, 2026
eb027ba
docs(plan): record C2 quota candidate gate
BobbyAxerol Sep 4, 2026
930cf0c
docs(plan): record C2 bootstrap preflight
BobbyAxerol Sep 4, 2026
24aa1c1
docs(plan): record C2 identity mount preflight
BobbyAxerol Sep 4, 2026
5ba7342
fix(reference): validate mark refresh per item
BobbyAxerol Sep 4, 2026
6d6cfca
fix(c2): accept quiet final bar reopen handoff
BobbyAxerol Sep 4, 2026
1972717
fix(c2): isolate strict mark reference batches
BobbyAxerol Sep 4, 2026
cde0fff
fix(c2): block untyped execution fallback
BobbyAxerol Sep 4, 2026
7d7f810
fix(c2): separate paced stream open from event SLA
BobbyAxerol Sep 4, 2026
ab5e5cc
docs(plan): record C2 paced candidate gate
BobbyAxerol Sep 4, 2026
8bd84de
docs(plan): record C2 rollback and cleanup
BobbyAxerol Sep 4, 2026
1d0110e
fix(v2): derive execution L2 materialization from demand
BobbyAxerol Sep 4, 2026
2e177fd
docs(plan): record L2 preflight rollback
BobbyAxerol Sep 4, 2026
0843d2d
fix(c2): bound closing bar revalidation
BobbyAxerol Sep 4, 2026
d536098
fix(v2): reject stale execution L2 envelopes
BobbyAxerol Sep 4, 2026
142ca70
docs(plan): record L2 rollout catch-up
BobbyAxerol Sep 4, 2026
8343f10
fix(v2): propagate stable stream request deadline
BobbyAxerol Sep 4, 2026
8b89e27
docs(plan): record stable stream deadline rollout
BobbyAxerol Sep 4, 2026
ab18808
perf(v2): increase bounded projector catch-up batch
BobbyAxerol Sep 4, 2026
20a35bc
docs(plan): record projector catch-up decision
BobbyAxerol Sep 4, 2026
524503c
fix(v2): recover durable bar history after cache rebuild
BobbyAxerol Sep 4, 2026
0644044
docs(plan): record C2 recovery runtime evidence
BobbyAxerol Sep 4, 2026
43bf0b5
fix(v2): recover external C2 identities additively
BobbyAxerol Sep 4, 2026
9f17f47
docs(plan): record C2 reader rollout and blocker
BobbyAxerol Sep 4, 2026
b4c75eb
docs(plan): record provider admission C2 failures
BobbyAxerol Sep 5, 2026
c57658a
fix(v2): retain bounded history and fence repair to active writer
BobbyAxerol Sep 5, 2026
9766659
fix(certification): bound final-bar reconnect observation
BobbyAxerol Sep 5, 2026
d7c7506
fix(query): separate canonical cache admission from provider quota
BobbyAxerol Sep 5, 2026
35a7cd8
fix(sdk): recover stale read sockets and patch inactive QUIC lock
BobbyAxerol Sep 5, 2026
92edc17
fix(certification): honor live sessions during strict book renewal
BobbyAxerol Sep 5, 2026
e24a42c
fix(certification): preserve closing budgets and immutable bar overlap
BobbyAxerol Sep 5, 2026
b2ccb00
fix(certification): retain typed liveness and bind current release reads
BobbyAxerol Sep 5, 2026
f0118d8
fix(certification): isolate hot feed batches from history latency
BobbyAxerol Sep 5, 2026
78d3a74
release: certify declared V2 crypto routes and record safe cleanup
BobbyAxerol Sep 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@ jobs:
- name: Build and import standalone SDK wheel
run: |
python scripts/build_qdl_sdk_release.py --output-dir /tmp/qdl-sdk
python -m pip install --disable-pip-version-check /tmp/qdl-sdk/qdl_sdk-2.0.0-py3-none-any.whl
python -m pip install --disable-pip-version-check /tmp/qdl-sdk/qdl_sdk-2.0.1-py3-none-any.whl
cd "$(mktemp -d)"
PYTHONPATH= python -c 'import qdl_sdk; assert qdl_sdk.__version__ == "2.0.0"'
PYTHONPATH= python -c 'import qdl_sdk; assert qdl_sdk.__version__ == "2.0.1"'

unit-tests:
runs-on: ubuntu-latest
Expand Down
50 changes: 50 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Publish Certified Release

on:
push:
tags: ['v2.*']

permissions:
contents: write

concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false

jobs:
publish:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
with:
fetch-depth: 0
- name: Verify stable ancestry and certificate
env:
RELEASE_TAG: ${{ github.ref_name }}
run: |
git merge-base --is-ancestor "$GITHUB_SHA" origin/main
python3 - <<'PY'
import json
import os
from pathlib import Path
import re
tag = os.environ['RELEASE_TAG']
if not re.fullmatch(r'v2\.\d+\.\d+', tag):
raise SystemExit('Expected a stable v2 semantic-version tag')
root = Path('upgrade/evidence/releases') / tag
if json.loads((root / 'certificate.json').read_text())['status'] != 'PASS':
raise SystemExit('Release certificate is not PASS')
if not (root / 'RELEASE_NOTES.md').is_file():
raise SystemExit('Release notes are missing')
PY
- name: Publish immutable tag and public evidence
env:
GH_TOKEN: ${{ github.token }}
RELEASE_TAG: ${{ github.ref_name }}
run: |
evidence="upgrade/evidence/releases/$RELEASE_TAG"
gh release create "$RELEASE_TAG" --verify-tag \
--title "Quant Data Layer $RELEASE_TAG" \
--notes-file "$evidence/RELEASE_NOTES.md" \
"$evidence/certificate.json"
91 changes: 81 additions & 10 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

47 changes: 46 additions & 1 deletion DATA_LAYER_SERVICE_ACCESS_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,52 @@ This document provides technical details on how to integrate production services

## Standard

Other services should connect to `data_layer` using this rule:
V2-routed Binance/OKX consumers use the versioned manifest and `qdl_sdk`:

- `AsyncDataLayerClient` (or `DataLayerClientV2` for synchronous reads) calls
authenticated V2 query replicas and the signed-cursor gRPC stream service.
- Warm up once, then append/deduplicate final events into the alpha's bounded
buffer. Restore the acknowledged cursor on reconnect. REST warmup/history
repairs missing state; it is not a per-tick polling loop.
- Resolve canonical instrument identity before reading. Venue, native symbol,
feed, interval, source policy, depth and freshness must match the consumer
manifest. A provider wrapper alone does not grant an identity access.
- V1 is fallback only where the manifest explicitly permits it; `BLOCKED`
products cannot silently fall back, substitute venues or direct-connect a
provider. VN remains on its separately governed V1 route.
- Closed BARs drive signals. QUOTE/TRADE provide current price context;
verified BOOK_SNAPSHOT/BOOK_DELTA support limit-price and impact analysis.
MARK_INDEX_PRICE is used only under the declared trigger/risk policy.
Trading System, not Data Layer, owns order submission, OCO and risk admission.

V2 query operations are:

```text
GET /v2/instruments
GET /v2/instruments/{identity}
GET /v2/market-data/{instrument_uid}/snapshot
GET /v2/market-data/{instrument_uid}/warmup
GET /v2/market-data/{instrument_uid}/history
POST /v2/market-data/warmup:batch
POST /v2/market-data/reference:batch
GET /v2/feeds/{instrument_uid}/status
POST /v2/system/readiness:check
GET /v2/system/readiness
GET /v2/data-quality/gaps
```

Use deployment-provided query/stream addresses, mTLS identity and JWT config;
port8100 and the Redis channels below describe **V1 compatibility**, not the
V2 authority. `warmup_then_stream()` exposes the SDK's signed snapshot/replay/
live handoff; no new per-symbol container or provider connection is needed.
Stale, partial or gapped execution data stays rejected. Bounded retry waits for
a new valid read; it never changes old data's timestamp or treats session
liveness as a fresh executable book/price.

### V1 Compatibility And Fallback

The V1-specific sections below retain these integration rules for existing
consumers and explicitly permitted fallback:

- use Redis Pub/Sub for live streaming consumption
- use REST API for warmup, latest-state recovery, diagnostics, and manual triggers
Expand Down
Loading
Loading