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 L40
orchestrata_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 L321
orchestrata_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 L18
orchestrata_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 L40
orchestrata_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 L40
orchestrata_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 L174
orchestrata_ultimate/gateway/handlers/volk _live_status L219
orchestrata_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 L219
orchestrata_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 L174
orchestrata_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 L174
orchestrata_ultimate/gateway/handlers/volk _require_admin L240
orchestrata_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 L174
orchestrata_ultimate/gateway/handlers/volk _require_admin L240
orchestrata_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 L82
orchestrata_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 L148
orchestrata_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 L248
orchestrata_ultimate/gateway/handlers/governance _resolve_engine L70
orchestrata_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 L59
orchestrata_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 L59
orchestrata_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 L59
orchestrata_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 L59
orchestrata_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 L59
orchestrata_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 L59
orchestrata_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 L59
orchestrata_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 L59
orchestrata_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 L41
orchestrata_ultimate/gateway/handlers/cxp handle_send L129
orchestrata_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 L29
orchestrata_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 L64
orchestrata_ultimate/gateway/handlers/_scope_guard require L40
orchestrata_ultimate/gateway/handlers/workflow _require_control L210
+8 more
tests/gateway/handlers/test_workflow.py::test_workflow_start_dispatches_pipeline
tests/orchestrator/test_pipeline_kernel_workflow.py::test_workflow_status_known_thread_returns_recorded_state
tests/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 L210
orchestrata_ultimate/gateway/handlers/workflow _require_thread_id L177
orchestrata_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 L210
orchestrata_ultimate/gateway/handlers/workflow _require_thread_id L177
orchestrata_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 L210
orchestrata_ultimate/gateway/handlers/workflow _require_thread_id L177
orchestrata_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 L83
orchestrata_ultimate/gateway/handlers/_policy_gate check L46
orchestrata_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 L64
orchestrata_ultimate/gateway/handlers/_scope_guard require L40
orchestrata_ultimate/gateway/handlers/config handle_get L74
+6 more
tests/gateway/handlers/test_config.py::test_config_get_returns_runtime_config
tests/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 L74
orchestrata_ultimate/gateway/runtime_config ConfigSnapshot L49
orchestrata_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 L74
orchestrata_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 L74
orchestrata_ultimate/gateway/runtime_config ConfigSnapshot L49
orchestrata_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 L125
orchestrata_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 L203
orchestrata_ultimate/gateway/handlers/auth AuthHandler L15
orchestrata_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 L117
orchestrata_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 L109
orchestrata_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 L109
orchestrata_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 L225
orchestrata_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::TestHeartbeatLoopLifecycle
tests/gateway/test_heartbeat_presence.py::test_heartbeat_task_starts_with_server_and_is_cancelled_on_stop
tests/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::TestHeartbeatSurvivesAnsweringClient
tests/gateway/test_heartbeat_presence.py::TestHeartbeatTimeoutDisconnectsAndPublishesPresence
tests/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 L1330
orchestrata_ultimate/gateway/session update_heartbeat L113
tests/gateway/test_heartbeat_presence.py::TestLastActivityRefreshesOnAnyMessage
tests/gateway/test_heartbeat_presence.py::test_last_activity_updates_even_on_malformed_json
tests/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::TestHeartbeatLoopLifecycle
tests/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 L209
orchestrata_ultimate/gateway/models to_dict L144
orchestrata_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 L131
orchestrata_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::TestHeartbeatTimeoutDisconnectsAndPublishesPresence
tests/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 L339
orchestrata_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 L26
orchestrata_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 L227
orchestrata_ultimate/gateway/ring_buffer read L113
none
REQ-014-128 Replay supports topic filter orchestrata_ultimate/gateway/handlers/gateway handle_replay L227
orchestrata_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 L117
orchestrata_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 L31
orchestrata_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 L31
orchestrata_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 L147
orchestrata_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 L179
orchestrata_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 L256
orchestrata_ultimate/gateway/handlers/knowledge handle_query L60
orchestrata_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 L51
orchestrata_ultimate/gateway/kernel_reprobe KernelReprober L37
orchestrata_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 L55
orchestrata_ultimate/gateway/server _handle_connection L1271
orchestrata_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 L51
orchestrata_ultimate/gateway/kernel_reprobe KernelReprober L37
orchestrata_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 L96
orchestrata_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 L168
orchestrata_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__ L25
orchestrata_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 L1214
orchestrata_ultimate/kernel/cli_main _emit_kernel_event L154
none
REQ-014-193 Event serialization happens once, shared across subscribers orchestrata_ultimate/gateway/protocol broadcast L118
orchestrata_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 L120
orchestrata_ultimate/gateway/handlers/gateway handle_info L161
orchestrata_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 L24
orchestrata_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 L23
orchestrata_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 L27
orchestrata_ultimate/gateway/mcp_ledger McpLedger L30
orchestrata_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