Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m3s
CI/CD Pipeline / Security Scanning (push) Successful in 2m18s
CI/CD Pipeline / Lint and Format (push) Failing after 34s
CI/CD Pipeline / Terraform Validation (push) Failing after 20s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 22s
Deploy ChainID 138 / Deploy ChainID 138 (push) Failing after 40s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 49s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 21s
Validation / validate-genesis (push) Successful in 25s
Validation / validate-terraform (push) Failing after 21s
Validation / validate-kubernetes (push) Failing after 8s
Validation / validate-smart-contracts (push) Failing after 8s
Validation / validate-security (push) Failing after 1m11s
Validation / validate-documentation (push) Failing after 14s
Verify Deployment / Verify Deployment (push) Failing after 45s
Ship AddressActivityRegistry V1/V2, ISO20022IntakeGateway, Chain138ParticipantSurface, checkpoint hub contracts, checkpoint-core package, aggregator/indexer/sdk services, relay profile guards, M00 diamond bridge facet, and OMNL compliance contracts. Co-authored-by: Cursor <cursoragent@cursor.com>
3.4 KiB
3.4 KiB
Operational compliance (OMNL)
Webhooks
- Configure
OMNL_WEBHOOK_URLS(comma-separated HTTPS endpoints). - Set
OMNL_WEBHOOK_SECRET. Each POST body is UTF-8 JSON;X-OMNL-Signature=sha256=+ hex(HMAC-SHA256(secret, rawBody)) (same bytes as the request body). UseverifyOmnlWebhookSignature()fromomnl-webhooks.tsor reimplement with the same algorithm. Timing-safe compare the full header value. - Payloads include
deliveryId(e.g.138-12345-2) for idempotent processing at the receiver. - Prefer allowlists and TLS 1.2+ only; rotate secrets on break-glass.
API hardening
OMNL_REQUIRE_API_KEY=1(orNODE_ENV=production): all/api/v1/omnl/*routes requireOMNL_API_KEYexcept/omnl/openapi.json,/omnl/catalog,/omnl/integration-status.OMNL_API_KEY: when set, sensitive routes requireAuthorization: Bearer <key>or?access_token=<key>.- Audit log:
OMNL_AUDIT_LOG_PATH(defaultreports/audit/omnl-audit.jsonl) — append-only JSONL for API, Fineract, webhooks, ISO 20022. - Triple reconcile:
GET /api/v1/omnl/reconcile/triple-state?lineId=0x...— Fineract GL + on-chain +config/omnl-custodian-snapshot.json. - IFRS disclosures:
GET /api/v1/omnl/disclosures/full(requires accountant review). - ISO 20022 store:
POST /api/v1/omnl/iso20022/messages— seeconfig/iso20022-omnl/README.md. OMNL_DASHBOARD_TOKEN: when set,GET /omnl/dashboardrequires the same token via?access_token=or headerX-OMNL-Dashboard-Token. For Fineract compare in the embedded page, open/omnl/dashboard?access_token=<OMNL_API_KEY>so the script can call protected routes.- OMNL rate limit:
OMNL_RATE_LIMIT_MAX/OMNL_RATE_LIMIT_WINDOW_MS(default 30/min per IP on/api/v1/omnl/*, in addition to the global API limiter).
Logs and retention
- Reserve commit and compliance events are emitted to application logs; align retention with your policy (often 90 days minimum for financial audit support).
- Config anchor (IPSAS / journal matrix): after registry/matrix JSON changes, run
bash scripts/hybx-omnl/omnl-reconcile-artifact.sh— this hashes off-chain config files only, not custodian bank balances vs on-chainR. Use a separate control for bank ↔ on-chain reconciliation if required for your auditor. - Automate anchors via cron or GitHub Actions — OMNL_RECONCILE_CRON_AND_CI.md.
Poller state
OMNL_POLLER_STATE_PATH: optional path for JSON storing last processed block per chain (default:.omnl-poller-state.jsonincwd). Survives restarts to avoid re-querying large ranges; webhook consumers should still treatdeliveryIdas idempotent.
Recommended alerts (operational)
Wire your log/metrics stack to alert on:
- Webhook POST failures (warn logs from
omnl-webhooks.ts). reportingCompliant === falseorattestationStalefrom compliance APIs for criticallineIds.mirror-status/inSync === falsewhen both reserve stores are configured.- Repeated
401on OMNL routes (possible credential scanning).
Break-glass
- Document who can pause
OMNLCircuitBreakerand rotate coordinator keys; store procedures outside this repo per org policy.
Data minimization
- Webhook payloads avoid full PII; line IDs and hashes only unless contractually required.