- Refresh pnpm-lock.yaml / workspace after prior merge - Add Chain 138 info hub SPA (info-defi-oracle-138) - Token list and validation script tweaks; path_b report; Hyperledger proxmox install notes - HYBX implementation roadmap and routing graph data model Note: transaction-composer is a nested git repo — convert to submodule before tracking. Made-with: Cursor
12 KiB
HYBX Jurisdictional Cheat Sheets — Implementation Roadmap
This document operationalizes the blueprint in hybx_jurisdictional_cheat_sheets_technical_plan.md. It defines build order, a canonical schema v1, API/service boundaries, integration contracts with the Compliance & Routing Sidecar and the routing graph model, and explicit non-goals. It does not replace the technical plan.
1. Scope statement
- Inherits the JIS vision: deterministic jurisdiction knowledge for banking, payments, liquidity, settlement, and regulatory execution (see technical plan Purpose and Core Objective).
- This roadmap only specifies: what to implement first, schema norms, MVP geography, read APIs, and how consumers (especially the sidecar) call JIS.
- Out of roadmap detail: full legal research, production data feeds, and UI design specs (covered at a high level only).
2. Architecture placement
JIS is a read-mostly fact service. It is not the Policy DSL: policies interpret facts; JIS supplies structured facts (permissions, rails, risk tiers, citations).
flowchart LR
Composer[Transaction_Composer]
Orch[Orchestrator]
Sidecar[Compliance_Routing_Sidecar]
JIS[JIS_Service]
Policy[Policy_DSL_future]
Composer --> Orch
Orch --> Sidecar
Sidecar --> JIS
Sidecar --> Policy
JIS -.->|facts_only| Sidecar
Flow (conceptual): Transaction graph / compiled transaction enters the sidecar; sidecar performs jurisdiction lookup against JIS (by ids, currencies, corridor pairs); sidecar combines JIS outputs with internal rules and optional future Policy DSL to produce PASS/WARN/FAIL, routing constraints, and explainable decisions.
3. Canonical schema v1 (normative for code)
Aligns with the technical plan “Data Model Design / Core Structure” example. All profiles are JSON-serializable documents stored as versioned rows.
3.1 Root envelope (every stored profile)
| Field | MVP required | Full profile | Description |
|---|---|---|---|
schemaVersion |
yes | yes | e.g. "1.0.0" for this spec. |
jurisdictionId |
yes | yes | Stable id (see section 4). |
profileVersion |
yes | yes | Semver or monotonic string for this jurisdiction’s content. |
effectiveFrom |
yes | yes | ISO-8601 date/time. |
effectiveTo |
no | optional | Null if current. |
dataQuality |
yes | yes | complete | partial | stub — MVP seeds often partial or stub. |
sourceRefs |
recommended | yes | Array of { "title", "url"?, "publisher"?, "retrievedAt"? } per subsection or aggregated. |
core |
yes | yes | Registry fields (see 3.2). |
currencyRules |
yes | yes | Array or map by currency code; see 3.3. |
fxRules |
yes | yes | FX convertibility, controls, limits (may be stub). |
settlementSystems |
yes | yes | List of settlement rail summaries. |
licensingRules |
partial | yes | License types applicable in jurisdiction; MVP may be empty array with dataQuality. |
crossBorderRules |
partial | yes | Inbound/outbound, restricted jurisdictions. |
riskProfile |
yes | yes | Political/financial/sanctions tiers as scalars or enums. |
sanctions |
no | optional | Module from technical plan § Sanctions Intelligence. |
documentation |
no | optional | Required doc types for payments. |
feeGovernance |
no | optional | Max fees, disclosures (technical plan § Fee Governance). |
3.2 core (jurisdiction registry)
Minimum MVP fields:
countryName,isoCountryCode(ISO 3166-1 alpha-2)primaryFinancialRegulator(string)legalSystemType(enum or string)centralBankName(string)primaryCurrency(ISO 4217)timeZones(string[])politicalRiskTier,financialRiskTier(string or number; align with technical plan Risk Intelligence)
Full profile adds: region, capital, secondary regulators, languages, extended sanctions status fields as in technical plan.
3.3 currencyRules (per currency or default)
Each entry should support at least:
currency(ISO 4217)convertibilityLevel(enum: e.g.fully_convertible,managed,restricted)settlementType(string or enum)liquidityAvailability(enum or coarse string)centralBankRestrictions(string, optional)
3.4 Versioning rules
- schemaVersion: bump minor for backward-compatible new optional fields; major for breaking renames.
- profileVersion: independent per
jurisdictionId; any material regulatory update increments profile version and setseffectiveFrom.
4. Jurisdiction ID scheme
- Default: ISO 3166-1 alpha-2 uppercase (
ID,US,SG,GB). - Sub-national or zones: use hyphenated suffixes, e.g.
US-NYonly if the product truly needs sub-national rules; otherwise keep national id and encode specificity incoreor overlays. - EU: prefer national ids (
DE,FR) for MVP; introduceEUorEU-DEonly when cross-EU harmonized profiles are maintained as first-class rows. - Special financial centers: e.g.
HK,MOas ISO codes; avoid custom ids unless they are registered in an internal enum table.
Document every non-ISO id in a single registry table in the implementation repo.
5. Phased delivery
| Phase | Goal | Outcome |
|---|---|---|
| 0 | Schema + validation | JSON Schema (or TypeScript types) + validator; one sample fixture (e.g. ID) that validates. |
| 1 | JIS MVP service | GET /jurisdiction/{id} returns active profile by id; POST /jurisdiction/query with { "ids": string[] } returns map id → profile; store in Postgres (prod) or SQLite (local dev); no Elasticsearch. |
| 2 | Pilot dataset | Seed 5–10 jurisdictions; minimum ID, US, SG, GB. Use dataQuality: partial or stub and sourceRefs where legal detail is incomplete. |
| 3 | Sidecar integration contract | Written contract (this section expanded in runbooks): request/response fields, caching, error handling; optional constraintHints for routing graph (see section 6). |
| 4 | Search (optional) | Add Elasticsearch or Postgres FTS only when query patterns exceed id/batch lookup. |
| 5 | Dashboard / visualization | Defer until API and seeds are stable (technical plan Visualization). |
6. Integration with existing HYBX artifacts
6.1 Compliance & Routing Sidecar
- Reference: hybx_compliance_routing_sidecar_technical_plan.md.
- Sidecar
POST /evaluate-transaction(or equivalent) should resolve all jurisdiction ids present on the transaction graph, participant registry, or routing plan, then call JIS (batch) before or during compliance/routing engines. - JIS returns facts only; the sidecar applies rules (AML/KYC/sanctions workflows may still use other services; JIS supplies jurisdiction-grounded permissions and tiers).
6.2 Routing graph data model
- Reference: hybx_routing_graph_data_model.md (jurisdiction overlays,
regulatoryPenalty, transaction-level filters). - Mapping: JIS
riskProfile,fxRules,crossBorderRules, andcurrencyRulesinform:- vertex
jurisdictionandcapabilitiesvalidation; - edge
jurisdictions[]tags and suggestedcostVector.regulatoryPenalty(sidecar computes penalty from JIS facts + policy weights).
- vertex
- JIS does not store the routing graph; it constrains how the graph may be traversed.
6.3 Transaction Composer
- Optional future: jurisdiction pickers on nodes, auto-tagging
jurisdictionIdonTransactionNodeData. Out of scope for phases 0–1 unless product prioritizes it. - Composer continues to emit design-time graphs; orchestrator/sidecar enrich with registry ids.
7. Sidecar integration contract (phase 3 deliverable detail)
Batch request (example):
{
"jurisdictionIds": ["ID", "US"],
"context": {
"currencies": ["USD", "IDR"],
"corridor": { "fromJurisdiction": "US", "toJurisdiction": "ID" },
"effectiveAt": "2026-03-29T12:00:00Z"
}
}
Batch response (example shape):
{
"profiles": {
"ID": { "schemaVersion": "1.0.0", "jurisdictionId": "ID", "profileVersion": "0.1.0", "dataQuality": "partial", "core": {}, "currencyRules": [], "fxRules": {}, "settlementSystems": [], "crossBorderRules": {}, "riskProfile": {} }
},
"notFound": []
}
Errors: HTTP 404 for unknown id on single GET; batch omits missing ids in profiles and lists them in notFound (or returns explicit errors—choose one behavior and document in OpenAPI).
Caching: Sidecar or API gateway may cache by (jurisdictionId, profileVersion) with TTL aligned to technical plan (configurable; target lookup < 100 ms p95 at steady state with cache).
8. Data acquisition and legal posture
- MVP: Manually curated YAML/JSON seeds in-repo or loaded from migration; every non-trivial field should have
sourceRefswhere possible. - Production expansion: Licensed legal/regulatory data providers and official publications (technical plan Data Acquisition Model). No commitment to automated scraping in MVP code paths.
- Disclaimer: Profiles are engineering aids; final legal interpretation remains with compliance officers and counsel.
9. Non-goals (explicit)
- Full global coverage on day one (technical plan Phase 1/2 expansion applies).
- Real-time regulatory crawling as a blocking dependency for MVP.
- Multilingual content in MVP (technical plan Localization deferred).
- Graph database for JIS core (optional in technical plan; not required for MVP).
- Replacing sanctions screening vendors or KYC systems—JIS complements them with jurisdiction facts.
10. Acceptance criteria (“MVP ready”)
- At least four jurisdiction profiles (
ID,US,SG,GB) validate against schema v1. GET /jurisdiction/{id}andPOST /jurisdiction/queryimplemented and documented (OpenAPI or equivalent).- With a warm cache, p95 read latency meets < 100 ms internal target under nominal load (align with technical plan Performance Targets).
- One worked example documented end-to-end: transaction touching USD→IDR with participants in US and ID, showing which JIS fields the sidecar would read for FX and cross-border checks, and how results feed hybx_routing_graph_data_model.md overlays.
Worked example (narrative)
- Transaction: remitter in US, beneficiary bank in ID, USD notionally converted to IDR.
- Sidecar resolves
USandIDprofiles; checksfxRulesandcrossBorderRulesfor both; readscurrencyRulesfor USD/IDR; compares against transaction amounts and rails in the routing plan. - If a rule indicates heightened friction, sidecar may set routing graph
regulatoryPenaltyon affected edges or return WARN with explanation references tosourceRefs.
11. References
| Document | Role |
|---|---|
| hybx_jurisdictional_cheat_sheets_technical_plan.md | Full JIS blueprint (subsystems, storage, visualization, global coverage). |
| hybx_compliance_routing_sidecar_technical_plan.md | Sidecar engines, API sketch, evaluation flow. |
| hybx_routing_graph_data_model.md | Routing vertices/edges, costVector, jurisdiction overlays. |
| transaction-composer/ | Design-time transaction graph and compiler (optional future jurisdiction fields). |
Document control
| Item | Value |
|---|---|
| Roadmap version | 1.0 |
| Aligns with technical plan | As of repo snapshot; amend when blueprint changes |
| Next reviews | After phase 1 API freeze; after first pilot dataset sign-off |