IRIS HTTP/API Refactor Progress¶
Historical rollout tracker. This work is complete and preserved only for implementation history. Current guidance lives under
docs/architecture/and the active delivery documents.
Overall Status¶
HTTP cutover: donetransport foundation: doneOpenAPI governance: donemode-aware router assembly: doneartifact drift control: donereview governance: donecapability metadata enrichment: doneoperation resource model: doneidempotency/concurrency runtime enforcement: doneconsistency/freshness semantics: donecache/revalidation governance: done
Completed Blocks¶
- [x] Root
/api/v1tree with domain-localbuild_router(mode, profile) - [x] Shared
core/httppackage - [x] Split
api/packages for all active HTTP domains - [x] Removal of legacy
views.pyentrypoints - [x] Centralized
operationIdand OpenAPI tag policy - [x] Committed OpenAPI snapshots with repo-root export/check workflow
- [x] Generated HTTP availability matrix with drift checks
- [x] Generated HTTP capability catalog with drift checks
- [x] Capability metadata policy over the generated catalog
- [x] Unified operation resource model for async/job endpoints
- [x] Runtime deduplication for async job triggers and explicit concurrency conflicts for stale control-plane draft apply
- [x] Consistency/freshness metadata on derived/cached analytical reads
- [x] Cache-Control, ETag and conditional GET policy for cacheable analytical snapshots
- [x] PR review checklist and API governance CI workflow
Current Block¶
- [x] HTTP/API governance plan complete
Cache And Revalidation Governance¶
- [x] shared cache/revalidation helper now lives in
core/http/cache.py - [x]
portfolio/statenow emits private cache headers and supports conditional GET with stable weakETag - [x]
market/radar,market/flowandcoins/{symbol}/market-decisionnow emit public near-real-time cache headers plus deterministic304 Not Modifiedbehavior - [x]
ETaggeneration ignores volatile analytical metadata such asgenerated_at/staleness_ms, so revalidation tracks snapshot content instead of request time
Consistency And Freshness Semantics¶
- [x] shared analytical metadata contract now exists in
core/http/contracts.pyandcore/http/analytics.py - [x]
portfolio/statenow declaresgenerated_at,consistency,freshness_classandstaleness_msas a cached analytical snapshot - [x]
market/radarandmarket/flownow expose explicit derived-read semantics based on the freshest contributing timestamps - [x]
coins/{symbol}/market-decisionnow exposes snapshot semantics instead of an unqualified aggregate payload
Idempotency And Concurrency Runtime Enforcement¶
- [x]
core/http/operation_store.pynow deduplicates active async/job dispatches on Redis-backed deduplication slots instead of blindly creating a new operation on every trigger - [x] repeated
news,market_data,market_structureandhypothesis_enginejob-trigger requests now return the existingoperation_idwithdeduplicated=trueand a stable repeat message - [x] deduplication slots are released automatically on terminal operation states, so retries after failure/completion create a new tracked operation instead of reusing stale state
- [x]
control_planestale draft apply now raises a typed409 concurrency_conflictresponse with structured version details instead of falling back to generic invalid-state handling
Operation Resource Model¶
- [x] async/job endpoints now return typed accepted contracts with stable
operation_id - [x]
core/http/operation_store.pypersists operation status, result and event history in Redis - [x] system HTTP surface exposes
GET /operations/{operation_id},/resultand/events - [x] job dispatchers in
news,market_data,market_structureandhypothesis_enginenow create tracked operations before queue dispatch - [x] TaskIQ job entrypoints update operation lifecycle through
run_tracked_operation(...)
Recent Commits¶
23ace85feat(api): add operation resource model for async jobs7ca3177feat(api): export capability catalog9e526caci(api): enforce governance snapshots7ee0eabfeat(api): check http availability matrix snapshots6b1ac24docs(api): add endpoint review checklista04aa62feat(api): export http availability matrix