Orchestrata Ultimate / RTM / 014-websocket-gateway
RTM: 014-websocket-gateway
Requirement to symbol to test rows for 014-websocket-gateway: WebSocket Gateway.
At a glance
| Item | Value |
|---|---|
| Requirement IDs | 207 |
Traced from src/ |
104 (50.2%) |
| Untraced | 103 |
Cited from tests/ |
25 (12.1%) |
Traced in src/ but not cited from tests/ |
80 |
Reading this matrix
This matrix lists each of the 207 requirement IDs of spec 014-websocket-gateway with the src/ symbols that cite it and the tests that cite it. 104 of them (50.2%) have at least one citing symbol and 103 have none.
25 requirements are also cited from tests/, and 80 are traced in code but never named by a test. A test citation is a @traces on a test function; it shows intent to cover, not that the test runs or reaches the symbol.
Rows showing none in the symbols column are the gaps to close first. The densest untraced groups are REQ-014-* (103).
Requirement to symbols to tests
| Requirement | Symbols in src/ |
Tests citing it |
|---|---|---|
REQ-014-001 Client subscribes to CXP traffic via cxp.subscribe RPC method |
orchestrata_ultimate/gateway/handlers/cxp CxpHandler L40orchestrata_ultimate/gateway/handlers/cxp handle_subscribe L364 |
none |
REQ-014-002 Server pushes CXP packets as they flow through the kernel |
orchestrata_ultimate/gateway/handlers/cxp publish_traffic L321orchestrata_ultimate/gateway/server _connect_grpc_kernel_once L595 |
none |
REQ-014-003 Subscription supports filtering by volk_id (TO or FROM) |
orchestrata_ultimate/gateway/pubsub evaluate_filters L18 |
none |
REQ-014-004 Subscription supports filtering by thread_id |
none | none |
REQ-014-005 Subscription supports filtering by subject pattern (glob match) |
orchestrata_ultimate/gateway/pubsub evaluate_filters L18 |
none |
REQ-014-006 Subscription supports filtering by delivery_status |
none | none |
REQ-014-007 Multiple filters combine with AND semantics |
orchestrata_ultimate/gateway/pubsub evaluate_filters L18orchestrata_ultimate/gateway/pubsub get_matching_connections L229 |
none |
REQ-014-008 Client unsubscribes via cxp.unsubscribe with subscription_id |
orchestrata_ultimate/gateway/handlers/cxp CxpHandler L40orchestrata_ultimate/gateway/handlers/cxp handle_unsubscribe L392 |
none |
REQ-014-009 Packet payloads optionally truncated (configurable max_payload_size) |
none | none |
REQ-014-010 Subscription confirmation includes subscription_id and active filter summary |
none | none |
REQ-014-011 Client queries CXP packet status via cxp.status with thread_id |
orchestrata_ultimate/gateway/handlers/cxp CxpHandler L40orchestrata_ultimate/gateway/handlers/cxp handle_status L424 |
none |
REQ-014-012 Status response includes delivery_status, work_status, timestamps |
none | none |
REQ-014-013 Status query returns history of status transitions |
none | none |
REQ-014-014 Status query handles unknown thread_id with clear error |
none | none |
REQ-014-015 Status query respects PAM++ authorization |
none | none |
REQ-014-016 Client calls volk.list to get all registered Volks |
orchestrata_ultimate/gateway/handlers/volk VolkHandler L174orchestrata_ultimate/gateway/handlers/volk _live_status L219orchestrata_ultimate/gateway/handlers/volk handle_list L246 |
none |
REQ-014-017 Each Volk entry includes: alias, capabilities, health, active_tasks, last_activity |
orchestrata_ultimate/gateway/handlers/volk _live_status L219orchestrata_ultimate/gateway/handlers/volk handle_list L246 |
none |
REQ-014-018 Client calls volk.get with alias for detailed Volk information |
orchestrata_ultimate/gateway/handlers/volk VolkHandler L174orchestrata_ultimate/gateway/handlers/volk handle_get L296 |
none |
REQ-014-019 Detailed info includes: registration_time, protocols, resource_usage, session_id |
none | none |
REQ-014-020 Volk list supports pagination (offset, limit) |
none | none |
REQ-014-021 Client subscribes to volk.lifecycle events |
orchestrata_ultimate/gateway/handlers/volk handle_lifecycle L406 |
none |
REQ-014-022 Events include: registered, deregistered, health_changed, task_started, task_completed |
none | none |
REQ-014-023 Each event includes volk_alias, event_type, timestamp, details |
orchestrata_ultimate/gateway/handlers/volk publish_lifecycle_event L432 |
none |
REQ-014-024 Status updates pushed within 500ms of state change |
none | none |
REQ-014-025 Subscription supports filtering by volk_alias |
none | none |
REQ-014-026 Client registers new Volk via volk.register (admin scope required) |
orchestrata_ultimate/gateway/handlers/volk VolkHandler L174orchestrata_ultimate/gateway/handlers/volk _require_admin L240orchestrata_ultimate/gateway/handlers/volk handle_register L326+1 more |
none |
REQ-014-027 Registration validates alias uniqueness and capability schema |
none | none |
REQ-014-028 Client deregisters Volk via volk.deregister (admin scope required) |
orchestrata_ultimate/gateway/handlers/volk VolkHandler L174orchestrata_ultimate/gateway/handlers/volk _require_admin L240orchestrata_ultimate/gateway/handlers/volk handle_deregister L373+1 more |
none |
REQ-014-029 Deregistration handles in-flight messages gracefully |
none | none |
REQ-014-030 Management operations logged to audit trail |
none | none |
REQ-014-031 Client subscribes to governance.decisions stream |
orchestrata_ultimate/gateway/handlers/governance handle_decisions L82orchestrata_ultimate/gateway/handlers/governance publish_decision_event L292 |
none |
REQ-014-032 Each decision includes: volk_id, action, resource, result (allow/deny) |
none | none |
REQ-014-033 Each decision includes: prolog_query, evaluation_latency_ms |
none | none |
REQ-014-034 Escalation events included with full escalation path and parties |
none | none |
REQ-014-035 Constitutional article violations include article reference and text |
none | none |
REQ-014-036 Client queries historical decisions via governance.query |
orchestrata_ultimate/gateway/handlers/governance _query_decisions L148orchestrata_ultimate/gateway/handlers/governance handle_query L108 |
none |
REQ-014-037 Query supports time range filter (date_from, date_to) |
none | none |
REQ-014-038 Query supports filtering by volk_id, result, action |
none | none |
REQ-014-039 Query results paginated (offset, limit) |
none | none |
REQ-014-040 Query results sorted by timestamp descending |
none | none |
REQ-014-041 Client evaluates governance check via governance.evaluate (read-only) |
orchestrata_ultimate/gateway/handlers/governance _decision_event_payload L248orchestrata_ultimate/gateway/handlers/governance _resolve_engine L70orchestrata_ultimate/gateway/handlers/governance handle_evaluate L175 |
none |
REQ-014-042 Dry-run returns would-be result without side effects |
none | none |
REQ-014-043 Dry-run includes Prolog trace showing rule evaluation path |
none | none |
REQ-014-044 Dry-run logged as audit event with type "dry_run" |
none | none |
REQ-014-045 Dry-run requires read_write scope minimum |
none | none |
REQ-014-046 Client lists active Prolog rules via governance.rules (admin scope) |
orchestrata_ultimate/gateway/handlers/governance handle_rules L314 |
none |
REQ-014-047 Rules returned grouped by category (routing, permission, escalation, budget) |
none | none |
REQ-014-048 Each rule includes: predicate, arity, source_file, line_number |
none | none |
REQ-014-049 Rule listing supports filtering by category |
none | none |
REQ-014-050 Rule listing supports full-text search on predicate names |
none | none |
REQ-014-051 Client calls session.list to see all active sessions |
orchestrata_ultimate/gateway/handlers/session SessionHandler L59orchestrata_ultimate/gateway/handlers/session handle_list L198 |
none |
REQ-014-052 Each session entry includes: id, portfolio_id, status, opened_at, goals |
none | none |
REQ-014-053 Client calls session.get with session_id for full state |
orchestrata_ultimate/gateway/handlers/session SessionHandler L59orchestrata_ultimate/gateway/handlers/session handle_get L232 |
none |
REQ-014-054 Full state includes: context, facts, carryover_tasks, duration, summary |
orchestrata_ultimate/gateway/handlers/session SessionHandler L59orchestrata_ultimate/gateway/handlers/session handle_get L232 |
none |
REQ-014-055 Session list supports filtering by portfolio_id and status |
none | none |
REQ-014-056 Client subscribes to session.events for lifecycle events |
orchestrata_ultimate/gateway/handlers/session SessionHandler L59orchestrata_ultimate/gateway/handlers/session handle_events L386 |
none |
REQ-014-057 Events include: opened, closed, recovered, context_updated, error_occurred |
orchestrata_ultimate/gateway/handlers/session handle_open L273 |
none |
REQ-014-058 Each event includes session_id, event_type, timestamp, details |
orchestrata_ultimate/gateway/handlers/session handle_open L273 |
none |
REQ-014-059 Client subscribes to session.facts.subscribe for fact emission events |
orchestrata_ultimate/gateway/handlers/session SessionHandler L59orchestrata_ultimate/gateway/handlers/session handle_facts_subscribe L417 |
none |
REQ-014-060 Fact events include fact_type, session_id, data, timestamp |
none | none |
REQ-014-061 Client opens new session via session.open (read_write scope) |
orchestrata_ultimate/gateway/handlers/session SessionHandler L59orchestrata_ultimate/gateway/handlers/session handle_open L273 |
none |
REQ-014-062 Session open accepts: portfolio, goals, context |
none | none |
REQ-014-063 Client closes session via session.close (read_write scope) |
orchestrata_ultimate/gateway/handlers/session SessionHandler L59orchestrata_ultimate/gateway/handlers/session handle_close L319 |
none |
REQ-014-064 Session close accepts: session_id, status, summary, carryover_tasks |
orchestrata_ultimate/gateway/handlers/session SessionHandler L59orchestrata_ultimate/gateway/handlers/session handle_close L319 |
none |
REQ-014-065 Session control operations respect PAM++ governance |
none | none |
REQ-014-066 Client queries portfolio stats via session.portfolio.stats |
none | none |
REQ-014-067 Stats include: total_sessions, total_duration, completion_rate, active_count |
none | none |
REQ-014-068 Stats support filtering by portfolio_id |
none | none |
REQ-014-069 Stats cached in Redis with 5-minute TTL |
none | none |
REQ-014-070 Stats queryable with time range filter |
none | none |
REQ-014-071 Client sends CXP packet via cxp.send (read_write scope) |
orchestrata_ultimate/gateway/handlers/cxp CxpHandler L41orchestrata_ultimate/gateway/handlers/cxp handle_send L129orchestrata_ultimate/gateway/kernel_reprobe KernelConnectAttempt L29+3 more |
none |
REQ-014-072 CXP packet validated against SPEC-004 schema before dispatch |
none | none |
REQ-014-073 PAM++ validates sender authority before routing |
none | none |
REQ-014-074 Response includes delivery_status and routing decision |
none | none |
REQ-014-075 Failed dispatch returns structured error with reason |
orchestrata_ultimate/gateway/kernel_reprobe KernelConnectAttempt L29orchestrata_ultimate/gateway/server _connect_grpc_kernel_once L595 |
none |
REQ-014-076 Client triggers workflow via workflow.start (read_write scope) |
orchestrata_ultimate/gateway/handlers/_scope_guard granted_scope L64orchestrata_ultimate/gateway/handlers/_scope_guard require L40orchestrata_ultimate/gateway/handlers/workflow _require_control L210+8 more |
tests/gateway/handlers/test_workflow.py::test_workflow_start_dispatches_pipelinetests/orchestrator/test_pipeline_kernel_workflow.py::test_workflow_status_known_thread_returns_recorded_statetests/orchestrator/test_pipeline_kernel_workflow.py::test_workflow_status_unknown_thread_returns_unknown_state |
REQ-014-077 Client pauses workflow via workflow.pause (read_write scope) |
orchestrata_ultimate/gateway/handlers/workflow _require_control L210orchestrata_ultimate/gateway/handlers/workflow _require_thread_id L177orchestrata_ultimate/gateway/handlers/workflow handle_pause L111+6 more |
tests/gateway/handlers/test_workflow.py::test_workflow_pause_checkpoints_and_halts |
REQ-014-078 Client resumes workflow via workflow.resume (read_write scope) |
orchestrata_ultimate/gateway/handlers/workflow _require_control L210orchestrata_ultimate/gateway/handlers/workflow _require_thread_id L177orchestrata_ultimate/gateway/handlers/workflow handle_resume L130+7 more |
tests/gateway/handlers/test_workflow.py::test_workflow_resume_from_checkpoint |
REQ-014-079 Client cancels workflow via workflow.cancel (read_write scope) |
orchestrata_ultimate/gateway/handlers/workflow _require_control L210orchestrata_ultimate/gateway/handlers/workflow _require_thread_id L177orchestrata_ultimate/gateway/handlers/workflow handle_cancel L157+6 more |
tests/gateway/handlers/test_workflow.py::test_workflow_cancel_terminates |
REQ-014-080 Workflow commands validated against PAM++ governance |
orchestrata_ultimate/gateway/handlers/_policy_gate _resolve_engine L83orchestrata_ultimate/gateway/handlers/_policy_gate check L46orchestrata_ultimate/gateway/handlers/_scope_guard granted_scope L64+6 more |
tests/gateway/handlers/test_workflow.py::test_workflow_denied_by_governance |
REQ-014-081 Client queries current config via config.get (read_only scope) |
orchestrata_ultimate/gateway/handlers/_scope_guard granted_scope L64orchestrata_ultimate/gateway/handlers/_scope_guard require L40orchestrata_ultimate/gateway/handlers/config handle_get L74+6 more |
tests/gateway/handlers/test_config.py::test_config_get_returns_runtime_configtests/gateway/handlers/test_config.py::test_config_watch_broadcasts_change |
REQ-014-082 Client queries config by key path via config.get with path parameter |
orchestrata_ultimate/gateway/handlers/config handle_get L74orchestrata_ultimate/gateway/runtime_config ConfigSnapshot L49orchestrata_ultimate/gateway/runtime_config _select_path L275+1 more |
tests/gateway/handlers/test_config.py::test_config_get_with_path_selects_subtree |
REQ-014-083 Configuration values with secrets are redacted in responses |
orchestrata_ultimate/gateway/handlers/config handle_get L74orchestrata_ultimate/gateway/runtime_config redact L120 |
tests/gateway/handlers/test_config.py::test_config_secrets_redacted |
REQ-014-084 Config response includes last_updated timestamp |
orchestrata_ultimate/gateway/handlers/config handle_get L74orchestrata_ultimate/gateway/runtime_config ConfigSnapshot L49orchestrata_ultimate/gateway/runtime_config _now_iso L43+3 more |
tests/gateway/handlers/test_config.py::test_config_response_includes_last_updated |
REQ-014-085 Config changes not permitted via gateway (read-only for safety) |
orchestrata_ultimate/gateway/handlers/config handle_set L125orchestrata_ultimate/gateway/runtime_config set L200 |
tests/gateway/handlers/test_config.py::test_config_set_rejected_via_gateway |
REQ-014-086 Client authenticates via auth.authenticate RPC method |
orchestrata_ultimate/gateway/auth_handler handle_jsonrpc_auth L203orchestrata_ultimate/gateway/handlers/auth AuthHandler L15orchestrata_ultimate/gateway/handlers/auth handle_authenticate L31 |
tests/gateway/test_heartbeat_presence.py::_authenticate |
REQ-014-087 Authentication required before any other RPC method |
orchestrata_ultimate/gateway/auth_handler handle_jsonrpc_auth L203 |
none |
REQ-014-088 Unauthenticated RPC calls return JSON-RPC error code -32001 (Unauthorized) |
none | none |
REQ-014-089 Unauthenticated clients disconnected after grace period (default: 5s) |
orchestrata_ultimate/gateway/auth_handler authenticate L117orchestrata_ultimate/gateway/auth_handler send_error L96 |
none |
REQ-014-090 Authentication events logged to audit trail |
none | none |
REQ-014-091 Static token configured via gateway config or GATEWAY_TOKEN env var |
orchestrata_ultimate/gateway/auth StaticTokenAuthenticator L109orchestrata_ultimate/gateway/auth_handler validate_via_mode L56 |
none |
REQ-014-092 Token comparison uses constant-time algorithm (hmac.compare_digest) |
orchestrata_ultimate/gateway/auth StaticTokenAuthenticator L109 |
none |
REQ-014-093 Empty or missing tokens rejected immediately |
orchestrata_ultimate/gateway/auth StaticTokenAuthenticator L109orchestrata_ultimate/gateway/handlers/auth handle_authenticate L31 |
none |
REQ-014-094 Token rotation supported via Redis-backed token store |
orchestrata_ultimate/gateway/auth StaticTokenAuthenticator L109 |
none |
REQ-014-095 Static token auth returns read_write scope by default |
orchestrata_ultimate/gateway/auth StaticTokenAuthenticator L109 |
none |
REQ-014-096 HMAC signature computed as HMAC-SHA256(secret, timestamp + nonce + client_id) |
orchestrata_ultimate/gateway/auth HmacAuthenticator L225orchestrata_ultimate/gateway/auth_handler validate_via_mode L56 |
none |
REQ-014-097 Timestamp drift rejected if > configurable window (default: 60s) |
orchestrata_ultimate/gateway/auth HmacAuthenticator L225 |
none |
REQ-014-098 Nonce replay rejected within drift window (Redis-tracked) |
orchestrata_ultimate/gateway/auth HmacAuthenticator L225 |
none |
REQ-014-099 Multiple shared secrets supported for key rotation |
orchestrata_ultimate/gateway/auth HmacAuthenticator L225 |
none |
REQ-014-100 HMAC auth returns scope from client_id to scope mapping |
orchestrata_ultimate/gateway/auth HmacAuthenticator L225 |
none |
REQ-014-101 Prolog queried for gateway_access(ClientId, Scope) on auth |
orchestrata_ultimate/gateway/cli run_serve L51 |
tests/gateway/test_cli_behavioral.py::TestRunServeLifecycle |
REQ-014-102 Scoped access enforced: read_only, read_write, admin |
orchestrata_ultimate/gateway/cli main L75 |
tests/gateway/test_cli_behavioral.py::TestMainServeDispatch |
REQ-014-103 Auth decisions cached in Redis with configurable TTL (default: 300s) |
none | none |
REQ-014-104 Cache invalidated on Prolog rule changes |
none | none |
REQ-014-105 Policy auth failure includes reason from Prolog evaluation |
none | none |
REQ-014-106 Server sends WebSocket ping every heartbeat_interval (default: 30s) |
orchestrata_ultimate/gateway/server _heartbeat_loop L1053 |
tests/gateway/test_heartbeat_presence.py::TestHeartbeatLoopLifecycletests/gateway/test_heartbeat_presence.py::test_heartbeat_task_starts_with_server_and_is_cancelled_on_stoptests/gateway/test_heartbeat_presence.py::test_pong_answering_client_stays_connected |
REQ-014-107 Client must respond with pong within heartbeat_timeout (default: 10s) |
none | none |
REQ-014-108 Client disconnected after heartbeat_max_misses consecutive missed pongs (default: 3) |
orchestrata_ultimate/gateway/server _heartbeat_loop L1053 |
tests/gateway/test_heartbeat_presence.py::TestHeartbeatSurvivesAnsweringClienttests/gateway/test_heartbeat_presence.py::TestHeartbeatTimeoutDisconnectsAndPublishesPresencetests/gateway/test_heartbeat_presence.py::test_client_closing_mid_ping_is_pruned_from_tracking+2 more |
REQ-014-109 last_activity updated on any client message (not just pong) |
orchestrata_ultimate/gateway/server _handle_message L1330orchestrata_ultimate/gateway/session update_heartbeat L113 |
tests/gateway/test_heartbeat_presence.py::TestLastActivityRefreshesOnAnyMessagetests/gateway/test_heartbeat_presence.py::test_last_activity_updates_even_on_malformed_jsontests/gateway/test_heartbeat_presence.py::test_last_activity_updates_on_ordinary_jsonrpc_call |
REQ-014-110 Heartbeat timing configurable per gateway instance |
orchestrata_ultimate/gateway/server _heartbeat_loop L1053 |
tests/gateway/test_heartbeat_presence.py::TestHeartbeatLoopLifecycletests/gateway/test_heartbeat_presence.py::test_heartbeat_task_starts_with_server_and_is_cancelled_on_stop |
REQ-014-111 Connected client list queryable via gateway.clients |
orchestrata_ultimate/gateway/handlers/gateway handle_clients L209orchestrata_ultimate/gateway/models to_dict L144orchestrata_ultimate/gateway/session get_active_connections L141 |
none |
REQ-014-112 Each client entry includes: client_id, connected_at, last_activity, auth_scope,... |
orchestrata_ultimate/gateway/models ConnectionInfo L131orchestrata_ultimate/gateway/session register L27 |
none |
REQ-014-113 Client provides metadata on connection (client_name, client_version, purpose) |
none | none |
REQ-014-114 Presence events pushed to gateway.presence subscribers |
orchestrata_ultimate/gateway/server _disconnect_timed_out_connection L1107 |
tests/gateway/test_heartbeat_presence.py::TestHeartbeatTimeoutDisconnectsAndPublishesPresencetests/gateway/test_heartbeat_presence.py::test_non_answering_client_disconnected_after_exact_miss_count |
REQ-014-115 Presence events include: connected, disconnected, timeout, metadata_updated |
none | none |
REQ-014-116 Disconnected client subscriptions cleaned up immediately |
none | none |
REQ-014-117 Client session removed from Redis on disconnect |
none | none |
REQ-014-118 Disconnect event logged to audit trail |
none | none |
REQ-014-119 Disconnect reason tracked: clean_close, timeout, error, server_shutdown |
none | none |
REQ-014-120 Connection cleanup completes within 1 second |
none | none |
REQ-014-121 Gateway maintains event ring buffer in Redis (configurable size, default: 10,000) |
orchestrata_ultimate/gateway/auth_handler try_connect_redis L339orchestrata_ultimate/gateway/ring_buffer RedisRingBuffer L52 |
none |
REQ-014-122 Events stored as Redis sorted set with timestamp score |
none | none |
REQ-014-123 Events older than ring_buffer_ttl auto-expired (default: 24h) |
none | none |
REQ-014-124 Ring buffer write latency < 5ms per event |
none | none |
REQ-014-125 Buffer overflow evicts oldest events |
orchestrata_ultimate/gateway/ring_buffer serialize_for_redis L26orchestrata_ultimate/gateway/ring_buffer write L76 |
none |
REQ-014-126 Client requests replay via gateway.replay with time range (since, until) |
none | none |
REQ-014-127 Client requests replay via gateway.replay with event count (last N events) |
orchestrata_ultimate/gateway/handlers/gateway handle_replay L227orchestrata_ultimate/gateway/ring_buffer read L113 |
none |
REQ-014-128 Replay supports topic filter |
orchestrata_ultimate/gateway/handlers/gateway handle_replay L227orchestrata_ultimate/gateway/ring_buffer read L113 |
none |
REQ-014-129 Replay supports same filters as live subscriptions |
none | none |
REQ-014-130 Replay delivers events in chronological order |
none | none |
REQ-014-131 Each event carries monotonically increasing sequence number per topic |
orchestrata_ultimate/gateway/protocol broadcast L117orchestrata_ultimate/gateway/server broadcast L1440 |
none |
REQ-014-132 Client detects gaps via sequence numbers |
none | none |
REQ-014-133 Gap notification includes missing sequence range |
none | none |
REQ-014-134 Client can request gap fill via gateway.replay with sequence range |
none | none |
REQ-014-135 Sequence counter persisted in Redis across gateway restarts |
none | none |
REQ-014-136 HTTP /health endpoint returns 200 OK when gateway is operational |
orchestrata_ultimate/gateway/http_surface build_gateway_http_app L31orchestrata_ultimate/gateway/http_surface health L96 |
none |
REQ-014-137 HTTP /health returns 503 when gateway is degraded or shutting down |
none | none |
REQ-014-138 HTTP /ready checks Redis, Neo4j, Prolog, and kernel health |
orchestrata_ultimate/gateway/server _reprobe_grpc_kernel L658 |
none |
REQ-014-139 /ready returns 200 only when all dependencies are healthy |
none | none |
REQ-014-140 Health check responses include component-level detail |
orchestrata_ultimate/gateway/http_surface build_gateway_http_app L31orchestrata_ultimate/gateway/http_surface ready L112 |
none |
REQ-014-141 HTTP /metrics returns Prometheus text format |
orchestrata_ultimate/gateway/http_surface metrics L125 |
tests/gateway/test_gateway_metrics.py::TestMetricsScrapeVisibility |
REQ-014-142 Metric: orchestrata_gateway_connected_clients (gauge) |
orchestrata_ultimate/gateway/metrics connection_closed L147orchestrata_ultimate/gateway/metrics connection_opened L136 |
tests/gateway/test_gateway_metrics.py::TestMetricsScrapeVisibility |
REQ-014-143 Metric: orchestrata_gateway_total_connections (counter) |
orchestrata_ultimate/gateway/metrics connection_opened L136 |
none |
REQ-014-144 Metric: orchestrata_gateway_messages_received_total (counter) |
orchestrata_ultimate/gateway/metrics message_received L153 |
none |
REQ-014-145 Metric: orchestrata_gateway_messages_sent_total (counter) |
orchestrata_ultimate/gateway/metrics message_sent L159 |
none |
REQ-014-146 Metric: orchestrata_gateway_rpc_latency_seconds (histogram, by method) |
orchestrata_ultimate/gateway/metrics rpc_latency L165 |
none |
REQ-014-147 Metric: orchestrata_gateway_subscription_count (gauge, by topic) |
orchestrata_ultimate/gateway/metrics subscription_added L179orchestrata_ultimate/gateway/metrics subscription_removed L192 |
none |
REQ-014-148 Metric: orchestrata_gateway_auth_success_total (counter) |
orchestrata_ultimate/gateway/metrics auth_success L205 |
none |
REQ-014-149 Metric: orchestrata_gateway_auth_failure_total (counter) |
orchestrata_ultimate/gateway/metrics auth_failure L211 |
none |
REQ-014-150 Metric: orchestrata_gateway_events_dropped_total (counter, by topic) |
none | none |
REQ-014-151 Client calls knowledge.query with Cypher query string |
orchestrata_ultimate/gateway/handlers/knowledge handle_component_work_context L256orchestrata_ultimate/gateway/handlers/knowledge handle_query L60orchestrata_ultimate/gateway/handlers/knowledge handle_volk_work_context L208 |
none |
REQ-014-152 Queries validated as read-only (MATCH, RETURN, WITH, OPTIONAL MATCH only) |
none | none |
REQ-014-153 Mutations rejected (MERGE, CREATE, DELETE, SET, REMOVE, DETACH) |
orchestrata_ultimate/gateway/handlers/knowledge handle_query L60 |
none |
REQ-014-154 Query timeout enforced (configurable, default: 10s) |
orchestrata_ultimate/gateway/handlers/knowledge handle_query L60 |
none |
REQ-014-155 Results returned as JSON-serializable node/relationship structures |
orchestrata_ultimate/gateway/handlers/knowledge _execute_cypher L395 |
none |
REQ-014-156 Client calls knowledge.nodes with node_type and pagination |
orchestrata_ultimate/gateway/handlers/knowledge handle_nodes L108 |
none |
REQ-014-157 Client calls knowledge.relationships with relationship_type and pagination |
orchestrata_ultimate/gateway/handlers/knowledge handle_relationships L158 |
none |
REQ-014-158 Node results include all properties and labels |
none | none |
REQ-014-159 Relationship results include source, target, type, and properties |
none | none |
REQ-014-160 Browsing supports filtering by property values |
none | none |
REQ-014-161 PAM++ controls which clients can query which graph segments |
none | none |
REQ-014-162 Prolog predicate gateway_can_query_kg(ClientId, QueryPattern) enforced |
none | none |
REQ-014-163 Query audit records stored in Neo4j |
none | none |
REQ-014-164 Query results capped at configurable max_results (default: 1000) |
none | none |
REQ-014-165 Query execution time included in response metadata |
none | none |
REQ-014-166 Server starts on configured host:port (default: 0.0.0.0:18790) |
orchestrata_ultimate/gateway/cli run_serve L51orchestrata_ultimate/gateway/kernel_reprobe KernelReprober L37orchestrata_ultimate/gateway/kernel_reprobe _run L113+3 more |
none |
REQ-014-167 Server accepts concurrent connections up to max_clients (default: 100) |
none | none |
REQ-014-168 Server handles connection open, message, close, error events |
orchestrata_ultimate/gateway/protocol process L55orchestrata_ultimate/gateway/server _handle_connection L1271orchestrata_ultimate/gateway/session unregister L67 |
none |
REQ-014-169 Server supports TLS when cert and key paths configured |
none | none |
REQ-014-170 Server gracefully shuts down on SIGTERM, closing all connections |
orchestrata_ultimate/gateway/cli run_serve L51orchestrata_ultimate/gateway/kernel_reprobe KernelReprober L37orchestrata_ultimate/gateway/kernel_reprobe stop L98+1 more |
none |
REQ-014-171 Messages follow JSON-RPC 2.0 specification |
none | none |
REQ-014-172 Requests have: jsonrpc, id, method, params |
none | none |
REQ-014-173 Responses have: jsonrpc, id, result or error |
orchestrata_ultimate/gateway/server _jsonrpc_error L96orchestrata_ultimate/gateway/server _jsonrpc_result L132 |
none |
REQ-014-174 Server-push notifications have: jsonrpc, method, params (no id) |
orchestrata_ultimate/gateway/protocol push_to_client L168orchestrata_ultimate/gateway/server push_to_client L1421 |
none |
REQ-014-175 Batch requests supported (array of JSON-RPC messages) |
none | none |
REQ-014-176 Parse error returns JSON-RPC code -32700 |
orchestrata_ultimate/gateway/server _handle_message L1329 |
none |
REQ-014-177 Invalid request returns JSON-RPC code -32600 |
orchestrata_ultimate/gateway/server _handle_jsonrpc L1366 |
none |
REQ-014-178 Method not found returns JSON-RPC code -32601 |
orchestrata_ultimate/gateway/rpc dispatch L339 |
none |
REQ-014-179 Invalid params returns JSON-RPC code -32602 |
none | none |
REQ-014-180 Internal error returns JSON-RPC code -32603 |
orchestrata_ultimate/gateway/exceptions __init__ L25orchestrata_ultimate/gateway/server _handle_jsonrpc L1366 |
none |
REQ-014-181 Unauthorized returns custom code -32001 |
none | none |
REQ-014-182 Rate limited returns custom code -32002 |
none | none |
REQ-014-183 Budget exceeded returns custom code -32003 |
none | none |
REQ-014-184 Maximum message size enforced (configurable, default: 1MB) |
none | none |
REQ-014-185 Oversized messages rejected with error |
none | none |
REQ-014-186 Rate limiting per client (configurable, default: 500 req/sec) |
none | none |
REQ-014-187 Rate limited clients receive -32002 error |
none | none |
REQ-014-188 WebSocket origin validation configurable |
none | none |
REQ-014-189 Per-client event buffer (configurable, default: 1000 events) |
none | none |
REQ-014-190 Buffer overflow drops oldest events and notifies client |
none | none |
REQ-014-191 Gap notification includes dropped count and sequence range |
none | none |
REQ-014-192 Events delivered asynchronously without blocking kernel EventBus |
orchestrata_ultimate/gateway/server _consume_kernel_events L1214orchestrata_ultimate/kernel/cli_main _emit_kernel_event L154 |
none |
REQ-014-193 Event serialization happens once, shared across subscribers |
orchestrata_ultimate/gateway/protocol broadcast L118orchestrata_ultimate/gateway/server broadcast L1440 |
none |
REQ-014-194 Maximum subscriptions per client enforced (configurable, default: 50) |
none | none |
REQ-014-195 Subscription limit exceeded returns structured error |
none | none |
REQ-014-196 Subscriptions cleaned up on client disconnect |
orchestrata_ultimate/gateway/pubsub unsubscribe_all L192 |
none |
REQ-014-197 Duplicate subscription to same topic+filter returns existing subscription_id |
none | none |
REQ-014-198 Subscription count per topic queryable via gateway.info |
none | none |
REQ-014-199 gateway.info returns: version, uptime, capabilities, topic list |
orchestrata_ultimate/gateway/handlers/gateway _kernel_is_live L120orchestrata_ultimate/gateway/handlers/gateway handle_info L161orchestrata_ultimate/gateway/pubsub get_total_subscription_count L314 |
none |
REQ-014-200 gateway.ping returns server timestamp for latency measurement |
orchestrata_ultimate/gateway/handlers/gateway handle_ping L141 |
none |
REQ-014-201 Gateway capabilities list includes supported RPC methods |
none | none |
REQ-014-202 Gateway uptime measured from server start time |
orchestrata_ultimate/gateway/handlers/gateway __init__ L57 |
none |
REQ-014-203 METHODS (gateway/method_table.py) is the single declarative table of gateway... |
orchestrata_ultimate/gateway/method_spec MethodSpec L24orchestrata_ultimate/gateway/rpc _build_method_registry L392 |
tests/gateway/test_method_table.py::test_scenario_one_method_table_feeds_both_transports |
REQ-014-204 orchestrata-mcp is a stdio MCP server that is a WebSocket JSON-RPC client of the... |
orchestrata_ultimate/gateway/mcp_tool_spec McpToolSpec L23orchestrata_ultimate/gateway/mcp_transport McpTransport L60 |
tests/gateway/test_mcp_transport.py::test_scenario_tool_list_generated |
REQ-014-205 A mutating tool call needs a single-use, tool-bound, 300 s token issued by approve;... |
orchestrata_ultimate/gateway/mcp_approval_gate McpApprovalGate L27orchestrata_ultimate/gateway/mcp_ledger McpLedger L30orchestrata_ultimate/gateway/mcp_transport McpTransport L60 |
tests/gateway/test_mcp_transport.py::test_scenario_mutating_call_needs_token |
REQ-014-206 Streaming methods, legacy aliases and auth.authenticate are expose=False and... |
orchestrata_ultimate/gateway/mcp_transport McpTransport L60 |
tests/gateway/test_mcp_transport.py::test_scenario_unexposed_methods |
REQ-014-207 deploy/install-claude-config.sh registers codetools and orchestrata at user... |
none | tests/gateway/test_mcp_registration_installer.py::test_scenario_registered_at_user_scope |