Orchestrata Ultimate / RTM / 021-opencode-integration
RTM: 021-opencode-integration
Requirement to symbol to test rows for 021-opencode-integration: OpenCode Integration.
At a glance
| Item | Value |
|---|---|
| Requirement IDs | 295 |
Traced from src/ |
13 (4.4%) |
| Untraced | 282 |
Cited from tests/ |
8 (2.7%) |
Traced in src/ but not cited from tests/ |
6 |
Reading this matrix
This matrix lists each of the 295 requirement IDs of spec 021-opencode-integration with the src/ symbols that cite it and the tests that cite it. 13 of them (4.4%) have at least one citing symbol and 282 have none.
8 requirements are also cited from tests/, and 6 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-021-* (282).
Requirement to symbols to tests
| Requirement | Symbols in src/ |
Tests citing it |
|---|---|---|
REQ-021-001 KG context lookup triggered on read tool execution for Orchestrata project files |
none | none |
REQ-021-002 KG context lookup triggered on grep tool execution for Orchestrata project files |
none | none |
REQ-021-003 File path extracted from args.filePath or args.path for KG lookup |
none | none |
REQ-021-004 KG context retrieved via KnowledgeGraphContext.get_file_context() Python call |
orchestrata_ultimate/session/kg_context KnowledgeGraphContext L26orchestrata_ultimate/session/kg_context get_file_context L88 |
none |
REQ-021-005 Context injected as args._orchestrata_context with kg_context and `source:... |
none | none |
REQ-021-006 KG context injection is non-blocking (try/catch with empty catch) |
none | none |
REQ-021-007 Missing file path gracefully skipped (early return if no filePath) |
none | none |
REQ-021-008 Empty KG context (whitespace-only) not injected into args |
none | none |
REQ-021-009 KG context Python subprocess runs with 2>/dev/null error suppression |
none | none |
REQ-021-010 KG context lookup scoped to ${PROJECT_ROOT} working directory |
none | none |
REQ-021-011 Agent activates on direct file path references (/home/mohamed/workspace/orchestrata/...) |
none | none |
REQ-021-012 Agent activates on relative path references (packages/orchestrata-core/src/...) |
none | none |
REQ-021-013 Agent activates on class name references (TraceabilityModule, Neo4jClient) |
none | none |
REQ-021-014 Agent activates on function name references (create_file_node, query_neo4j) |
none | none |
REQ-021-015 Agent activates on spec ID references (SPEC-001, 001-kernel) |
none | none |
REQ-021-016 Agent activates on requirement ID references (REQ-001, REQ-004-US-001-NNN —... |
none | none |
REQ-021-017 Agent activates on user story references (US-001, User Story 001) |
none | none |
REQ-021-018 Agent queries file basic info (path, language, line_count, size_bytes) |
none | none |
REQ-021-019 Agent queries classes defined in file (name, line_start, line_end) |
none | none |
REQ-021-020 Agent queries functions defined in file (name, line_start, line_end, is_async) |
none | none |
REQ-021-021 Agent queries traceability links (code type, name, requirement_id, requirement_text) |
none | none |
REQ-021-022 Agent queries inheritance hierarchy (child to ancestors, depth 3) |
none | none |
REQ-021-023 Agent queries entity by name with CONTAINS and exact match |
none | none |
REQ-021-024 Agent queries inbound and outbound relationships (limit 10 each) |
none | none |
REQ-021-025 Agent connects to the operational KG (Memgraph) at the active env profile's endpoint... |
none | none |
REQ-021-026 Agent uses the orchkg database name |
none | none |
REQ-021-027 Agent activates on file, class, and function mentions |
none | none |
REQ-021-028 Agent activates on code structure and relationship questions |
none | none |
REQ-021-029 Agent activates on refactoring requests |
none | none |
REQ-021-030 Agent activates on specification and requirement inquiries |
none | none |
REQ-021-031 Agent uses /query-kg tool internally for Cypher execution |
none | none |
REQ-021-032 Agent provides file-to-class and file-to-function mappings |
none | none |
REQ-021-033 Agent provides inheritance hierarchies (depth 2) |
none | none |
REQ-021-034 Agent provides code-to-requirement traceability links |
none | none |
REQ-021-035 Agent runs transparently without explicit user invocation |
none | none |
REQ-021-036 Check existing session via session_cli.py status --json |
none | none |
REQ-021-037 Resume existing session if active (log "Resumed existing session N") |
none | none |
REQ-021-038 Begin new session if none active with purpose "OpenCode session HH:MM" |
none | none |
REQ-021-039 Update project state to ACTIVE via session_cli.py update-state --status ACTIVE |
none | none |
REQ-021-040 Display session banner with seq number (3-digit padded) |
none | none |
REQ-021-041 Display session focus (purpose) if available |
none | none |
REQ-021-042 Display project version from state |
none | none |
REQ-021-043 Display git branch from state |
none | none |
REQ-021-044 Display test state from state |
none | none |
REQ-021-045 Display total session count |
none | none |
REQ-021-046 Display pending work items (top 5 with priority prefix) |
none | none |
REQ-021-047 Show "... and N more" for pending work beyond 5 items |
none | none |
REQ-021-048 Inject session context into output.context array |
none | none |
REQ-021-049 Log session start/resume to client.app.log with sessionSeq and pendingCount |
none | none |
REQ-021-050 Trigger background KG sync only for orchestrata project directory |
none | none |
REQ-021-051 Run sync_monorepo_to_neo4j.py as detached process (nohup, /dev/null redirect) |
none | none |
REQ-021-052 KG sync start is non-blocking (catch with empty handler) |
none | none |
REQ-021-053 Log KG sync start to client.app.log |
none | none |
REQ-021-054 Check Redis queue size via redis-cli SCARD orchestrata:kg:sync:queue |
none | none |
REQ-021-055 Process queue synchronously if pending count > 0 |
none | none |
REQ-021-056 Pop files from Redis set via SPOP in loop |
none | none |
REQ-021-057 Sync each file via FileSynchronizer.sync_file() |
none | none |
REQ-021-058 Report synced count to stderr |
none | none |
REQ-021-059 Queue flush is non-blocking (try/catch) |
none | none |
REQ-021-060 Check Redis queue depth via redis-cli LLEN orchestrata:conversation:queue |
orchestrata_ultimate/knowledge_graph/conversation_consumer depth L488orchestrata_ultimate/knowledge_graph/conversation_consumer depth L709 |
tests/scripts/test_redis_exec.py::test_incr_round_triptests/scripts/test_redis_exec.py::test_lpush_ltrim_lrange |
REQ-021-061 Process conversation queue if pending count > 0 |
orchestrata_ultimate/knowledge_graph/conversation_consumer flush L648 |
none |
REQ-021-062 Pop turns from Redis list via LPOP in loop |
orchestrata_ultimate/knowledge_graph/conversation_consumer ack L461orchestrata_ultimate/knowledge_graph/conversation_consumer claim L453orchestrata_ultimate/knowledge_graph/conversation_consumer flush L648+1 more |
none |
REQ-021-063 Parse JSON turns, skip invalid entries |
orchestrata_ultimate/knowledge_graph/conversation_consumer ConversationMessageError L259orchestrata_ultimate/knowledge_graph/conversation_consumer flush L648orchestrata_ultimate/knowledge_graph/conversation_consumer parse L307+1 more |
none |
REQ-021-064 Group turns by session_seq |
none | none |
REQ-021-065 Create Conversation nodes with session_id opencode-{seq}, platform "opencode" |
orchestrata_ultimate/knowledge_graph/canonical_schema conversation_entity_id L934orchestrata_ultimate/knowledge_graph/canonical_schema conversation_turn_entity_id L989orchestrata_ultimate/knowledge_graph/conversation_consumer to_statements L507 |
tests/claude/test_claude_turn_capture_coverage.py::ftests/scripts/test_irc_conversation_capture.py::_drain_privmsgstests/scripts/test_irc_conversation_capture.py::_privmsg+14 more |
REQ-021-066 Create ConversationTurn nodes with turn_id, seq, role, content, timestamp, platform |
orchestrata_ultimate/knowledge_graph/conversation_consumer to_statements L507 |
tests/scripts/test_irc_conversation_capture.py::test_flush_creates_conversation_and_turn_nodes_from_irc_capturetests/scripts/test_irc_conversation_capture.py::test_kimi_lines_captured_as_assistant_v2_with_turn_ordering |
REQ-021-067 Link ConversationTurn to Conversation via HAS_TURN relationship |
orchestrata_ultimate/knowledge_graph/conversation_consumer to_statements L507 |
tests/scripts/test_irc_conversation_capture.py::test_flush_creates_conversation_and_turn_nodes_from_irc_capturetests/scripts/test_irc_conversation_capture.py::test_sent_line_lands_as_turn_reachable_from_project_hub |
REQ-021-068 Content truncated to 2000 characters before Neo4j storage |
orchestrata_ultimate/knowledge_graph/conversation_consumer parse L307 |
tests/scripts/test_irc_conversation_capture.py::test_queue_max_falls_back_to_default_on_invalid_value |
REQ-021-069 Neo4j driver connects to bolt://localhost:7687 (from environment) |
orchestrata_ultimate/kernel/cli_main _boot_conversation_consumer L575orchestrata_ultimate/kernel/cli_main get_metadata L567orchestrata_ultimate/knowledge_graph/conversation_consumer create_conversation_graph_repository L179+3 more |
tests/scripts/test_irc_conversation_capture.py::test_unset_keys_never_fall_back_to_ambient_redis_and_log_one_line |
REQ-021-070 Conversation flush is non-blocking |
orchestrata_ultimate/kernel/cli_main _boot_conversation_consumer L575orchestrata_ultimate/kernel/cli_main stop L560orchestrata_ultimate/knowledge_graph/conversation_consumer flush L648 |
tests/kernel/test_cli_main_conversation_boot.py::test_conversation_consumer_component_stop_swallows_flush_errorstests/scripts/test_irc_conversation_capture.py::_expect_containstests/scripts/test_irc_conversation_capture.py::_spawn_listener_subprocess+22 more |
REQ-021-071 Extract achievements from git log --oneline --since="2 hours ago" -10 |
none | none |
REQ-021-072 Strip commit hash prefix from achievement lines |
none | none |
REQ-021-073 Take top 5 achievements |
none | none |
REQ-021-074 End session via session_cli.py end --achievements "..." |
none | none |
REQ-021-075 Archive old sessions keeping last 3 via SessionArchiver |
none | none |
REQ-021-076 Log session archive with achievement count and deception findings count |
none | none |
REQ-021-077 Clear toolCallHistory on session end |
none | none |
REQ-021-078 Reset readCount to 0 on session end |
none | none |
REQ-021-079 Session auto-end failures logged as warnings (non-blocking) |
none | none |
REQ-021-080 Run py_compile on edited file with 10-second timeout |
none | none |
REQ-021-081 Report syntax errors with first 200 characters of stderr |
none | none |
REQ-021-082 Run black --check --diff on edited file with 30-second timeout |
none | none |
REQ-021-083 Report black formatting diff (first 300 characters) |
none | none |
REQ-021-084 Run isort --check --diff on edited file with 30-second timeout |
none | none |
REQ-021-085 Report isort import ordering diff (first 300 characters) |
none | none |
REQ-021-086 All Gate 1 tools run via uv run prefix |
none | none |
REQ-021-087 Run flake8 with --select=E,F,W,C90 selectors |
none | none |
REQ-021-088 Set --max-line-length=88 for black compatibility |
none | none |
REQ-021-089 Ignore E203,W503,E501 codes |
none | none |
REQ-021-090 Fatal lint codes (E9xx, F63x, F72x) reported as errors |
none | none |
REQ-021-091 Non-fatal lint codes reported as warnings |
none | none |
REQ-021-092 Maximum 15 lint lines reported |
none | none |
REQ-021-093 Flake8 run with 30-second timeout |
none | none |
REQ-021-094 Run mypy --ignore-missing-imports --no-error-summary with 60-second timeout |
none | none |
REQ-021-095 Filter mypy output to lines containing the file path or : error: |
none | none |
REQ-021-096 Maximum 10 mypy error lines reported |
none | none |
REQ-021-097 Module import test: derive module path from packages/ structure |
none | none |
REQ-021-098 Module import test: run python3 -c "import {module}" with 30-second timeout |
none | none |
REQ-021-099 Report import errors with first 300 characters of stderr |
none | none |
REQ-021-100 Detect hardcoded passwords via regex password\s*=\s*['"][^'"]+['"] |
none | none |
REQ-021-101 Detect hardcoded API keys via regex api[_-]?key\s*=\s*['"][^'"]+['"] |
none | none |
REQ-021-102 Detect hardcoded secrets via regex secret\s*=\s*['"][^'"]+['"] |
none | none |
REQ-021-103 Detect hardcoded tokens via regex token\s*=\s*['"][^'"]+['"] |
none | none |
REQ-021-104 Detect debug f-string print statements as warnings |
none | none |
REQ-021-105 Detect TODO/FIXME/HACK/XXX/BUG comments (max 3 reported) |
none | none |
REQ-021-106 Detect bare except: with pass body as error |
none | none |
REQ-021-107 Detect missing logger in files with except or def blocks |
none | none |
REQ-021-108 Detect exceptions not logged via logger.error/exception/critical |
none | none |
REQ-021-109 Detect print statements that should use logging |
none | none |
REQ-021-110 Check mutable default arguments (def func(x=[])) as error |
none | none |
REQ-021-111 Check @traces decorator presence for files with 3+ public items |
none | none |
REQ-021-112 Report spec/requirement references found in code as info |
none | none |
REQ-021-113 Count branches (if/elif/for/while/except) per function |
none | none |
REQ-021-114 Branch count > 10 reported as error |
none | none |
REQ-021-115 Branch count > 7 reported as warning |
none | none |
REQ-021-116 Calculate max nesting depth (4-space indent units) |
none | none |
REQ-021-117 Nesting depth > 5 reported as error |
none | none |
REQ-021-118 Nesting depth > 4 reported as warning |
none | none |
REQ-021-119 Lines > 100 characters counted and reported as warning |
none | none |
REQ-021-120 Function body > 40 lines reported as warning with function name |
none | none |
REQ-021-121 Functions starting with uppercase reported as naming error (must be snake_case) |
none | none |
REQ-021-122 Classes starting with lowercase reported as naming error (must be PascalCase) |
none | none |
REQ-021-123 Module-level UPPER_SNAKE constants detected and flagged for review |
none | none |
REQ-021-124 Singleton pattern detected (__instance = None) and reported as info |
none | none |
REQ-021-125 Factory pattern detected (def create/make/build/factory) and reported as info |
none | none |
REQ-021-126 Builder pattern detected (def set/with/add/build) and reported as info |
none | none |
REQ-021-127 @dataclass usage detected and reported as info |
none | none |
REQ-021-128 ABC/Protocol usage detected and reported as info |
none | none |
REQ-021-129 State machine pattern detected and reported as info |
none | none |
REQ-021-130 God object detection: class with > 20 methods reported as warning |
none | none |
REQ-021-131 Feature envy detection: function with > 15 self references reported as warning |
none | none |
REQ-021-132 Only Python files under packages/ trigger the review pipeline |
none | none |
REQ-021-133 Review report formatted with box-drawing characters and gate labels |
none | none |
REQ-021-134 All gates passed: display "ALL GATES PASSED" with gate list |
none | none |
REQ-021-135 Errors present: display "FAILED" with all error lines |
none | none |
REQ-021-136 Warnings present: display "WARNINGS" section with all warning lines |
none | none |
REQ-021-137 Quick-fix commands shown in error output (black, isort) |
none | none |
REQ-021-138 Errors throw Error to block the edit and force agent to fix |
none | none |
REQ-021-139 Warnings logged but do not block the edit |
none | none |
REQ-021-140 Error output maximum: 25 errors, 20 warnings, 8 info items |
none | none |
REQ-021-141 Passed files queued for KG sync via redis-cli SADD |
none | none |
REQ-021-142 Tool calls recorded in toolCallHistory array on tool.execute.after |
none | none |
REQ-021-143 Each record includes tool name, args, timestamp (Date.now()), and success boolean |
none | none |
REQ-021-144 History capped at 100 entries (oldest shifted out) |
none | none |
REQ-021-145 History cleared on session end (session.idle and session close) |
none | none |
REQ-021-146 Quoted content removed before analysis (```, `, > blockquotes) |
none | none |
REQ-021-147 Analysis operates on lowercased narrative text |
none | none |
REQ-021-148 File creation claims matched against 3 regex patterns |
none | none |
REQ-021-149 File creation without Write/Edit tool flagged as ACTION_DECEPTION (CRITICAL) |
none | none |
REQ-021-150 Command execution claims matched against 3 regex patterns |
none | none |
REQ-021-151 Command execution without Bash tool flagged as ACTION_DECEPTION (CRITICAL) |
none | none |
REQ-021-152 File reading claims matched against 2 regex patterns |
none | none |
REQ-021-153 File reading without Read/Grep tool flagged as ACTION_DECEPTION (HIGH) |
none | none |
REQ-021-154 Unacknowledged tool errors flagged as ERROR_CONCEALMENT (CRITICAL) |
none | none |
REQ-021-155 Error acknowledgment checked via keywords: error, failed, failure, issue, couldn't,... |
none | none |
REQ-021-156 Failed tools listed in evidence field of findings |
none | none |
REQ-021-157 Deception audit runs on session.idle hook |
none | none |
REQ-021-158 Report formatted with severity icons (CRITICAL=red, HIGH=orange, MEDIUM=yellow, LOW=blue) |
none | none |
REQ-021-159 Each finding shows type, severity, description, and evidence |
none | none |
REQ-021-160 Total violation count shown at report end |
none | none |
REQ-021-161 Clean audit displays "No issues detected" message |
none | none |
REQ-021-162 Findings logged to client.app.log with error level |
none | none |
REQ-021-163 unittest.mock pattern blocked in test files |
none | none |
REQ-021-164 MagicMock pattern blocked in test files |
none | none |
REQ-021-165 @patch decorator pattern blocked in test files |
none | none |
REQ-021-166 AsyncMock pattern blocked in test files |
none | none |
REQ-021-167 Mock() constructor pattern blocked in test files |
none | none |
REQ-021-168 patch.object pattern blocked in test files |
none | none |
REQ-021-169 Policy only applies to files with "test" in path (case-insensitive) |
none | none |
REQ-021-170 Violation throws descriptive Error with pattern name |
none | none |
REQ-021-171 Relative import pattern from . import blocked |
none | none |
REQ-021-172 Pattern matches at beginning of line (with optional whitespace) |
none | none |
REQ-021-173 Violation throws Error with "Use absolute imports" message |
none | none |
REQ-021-174 pip install blocked with suggestion "uv add" |
none | none |
REQ-021-175 pip3 install blocked with suggestion "uv add" |
none | none |
REQ-021-176 pip sync blocked with suggestion "uv sync" |
none | none |
REQ-021-177 requirements.txt references blocked with suggestion "Use pyproject.toml with uv" |
none | none |
REQ-021-178 Violations throw Error with specific suggestion |
none | none |
REQ-021-179 rm -rf / pattern blocked |
none | none |
REQ-021-180 Fork bomb pattern :(){ :|:& }; blocked |
none | none |
REQ-021-181 >/dev/null redirect pattern blocked |
none | none |
REQ-021-182 Blocked patterns throw Error with command in message |
none | none |
REQ-021-183 Writes to paths containing .claude/plans blocked |
none | none |
REQ-021-184 Redirect message points to ~/workspace/orchestrata/plans/ |
none | none |
REQ-021-185 Git checkpoint created before edit and write tool operations |
none | none |
REQ-021-186 Checkpoint commits use --no-verify flag |
none | none |
REQ-021-187 Checkpoint message format: checkpoint: before {tool} {filePath} |
none | none |
REQ-021-188 Git checkpoint failures are non-blocking (|| true) |
none | none |
REQ-021-189 Read count incremented on each read tool execution |
none | none |
REQ-021-190 Read count > 50 throws Error with guidance to use grep first |
none | none |
REQ-021-191 Read count reset to 0 on session end |
none | none |
REQ-021-192 MCP document-reader health checked on read and grep tool execution |
none | none |
REQ-021-193 Health check via curl -sf to http://localhost:3456/health |
none | none |
REQ-021-194 MCP availability logged as info (does not block native tool) |
none | none |
REQ-021-195 session-status returns formatted session info with box-drawing characters |
none | tests/scripts/test_check_feature_loss.py::test_deleted_python_symbol_covered_by_surviving_ts_symbol_is_not_a_losstests/scripts/test_check_feature_loss.py::test_real_opencode_session_status_ids_produce_no_finding_at_all |
REQ-021-196 session-status shows session seq, status, purpose, started time, duration |
none | none |
REQ-021-197 session-status shows achievements (top 3) and next steps (top 3) |
none | none |
REQ-021-198 session-status shows project version, branch, test state, session count, pending count |
none | none |
REQ-021-199 session-begin accepts purpose (string) and optional objectives (string[]) |
none | none |
REQ-021-200 session-end accepts optional achievements and upcoming (string[]) |
none | none |
REQ-021-201 session-log-work accepts desc (string) and optional details (string[]) |
none | none |
REQ-021-202 session-log-achievement accepts item (string) |
none | none |
REQ-021-203 session-add-work accepts text, optional priority, optional notes |
none | none |
REQ-021-204 session-complete-work accepts text (string) |
none | none |
REQ-021-205 session-update-state accepts optional version, branch, testState, status |
none | none |
REQ-021-206 session-log-choice accepts choice (string) and reason (string) |
none | none |
REQ-021-207 kg-query executes Cypher query via neo4j Python driver |
none | none |
REQ-021-208 kg-query returns "KG query only available for Orchestrata project" for... |
none | none |
REQ-021-209 kg-sync runs sync_monorepo_to_neo4j.py and returns first 2000 chars |
none | none |
REQ-021-210 kg-queue-status returns pending count and file list from Redis SET |
none | none |
REQ-021-211 kg-flush-queue processes all files in sync queue via FileSynchronizer |
none | none |
REQ-021-212 kg-file-context retrieves full KG context for a file path |
none | none |
REQ-021-213 kg-find-file searches File nodes by name pattern |
none | none |
REQ-021-214 kg-find-entity searches Class and Function nodes by name |
none | none |
REQ-021-215 kg-stats returns node and relationship counts by label/type |
none | none |
REQ-021-216 conv-status returns conversation queue depth from Redis |
orchestrata_ultimate/knowledge_graph/conversation_consumer depth L709orchestrata_ultimate/tools/conversation_tools execute L55 |
none |
REQ-021-217 conv-sync flushes conversation queue to Neo4j |
orchestrata_ultimate/knowledge_graph/conversation_consumer FlushReport L607orchestrata_ultimate/knowledge_graph/conversation_consumer to_summary L617orchestrata_ultimate/tools/conversation_tools execute L113 |
none |
REQ-021-218 "remember when" phrase triggers memory search |
none | none |
REQ-021-219 "do you remember" phrase triggers memory search |
none | none |
REQ-021-220 "recall when" phrase triggers memory search |
none | none |
REQ-021-221 "remember that" phrase triggers memory search |
none | none |
REQ-021-222 "we discussed" phrase triggers memory search |
none | none |
REQ-021-223 "we talked about" phrase triggers memory search |
none | none |
REQ-021-224 "last time we" phrase triggers memory search |
none | none |
REQ-021-225 "what happened with" phrase triggers memory search |
none | none |
REQ-021-226 Topic extracted from text after the trigger phrase |
none | none |
REQ-021-227 Topic cleaned of leading punctuation |
none | none |
REQ-021-228 Words shorter than 3 characters excluded from search terms |
none | none |
REQ-021-229 Last 20 sessions searched in reverse order (newest first) |
none | none |
REQ-021-230 Session purpose matched against topic words |
none | none |
REQ-021-231 Session achievements matched against topic words |
none | none |
REQ-021-232 Session work log entries matched against topic words |
none | none |
REQ-021-233 Maximum 10 results returned |
none | none |
REQ-021-234 Results include session seq, date, match type (purpose/achievement/log) |
none | none |
REQ-021-235 Results injected into output.context as formatted block |
none | none |
REQ-021-236 Memory search logged to client.app.log with topic |
none | none |
REQ-021-237 Search failure logged as warning (non-blocking) |
none | none |
REQ-021-238 No-match case prints "No matching sessions found" message |
none | none |
REQ-021-239 Setup orchestrata paths (workspace, packages, knowledge src, core src) |
none | none |
REQ-021-240 Async query via Neo4jClient from orchestrata.knowledge |
none | none |
REQ-021-241 Connection to the active env profile's KG endpoint (test fleet:... |
none | none |
REQ-021-242 Return JSON with success, data, and count fields |
none | none |
REQ-021-243 Return JSON error with type field on failure |
none | none |
REQ-021-244 Accept Cypher query as argv[1] and optional JSON parameters as argv[2] |
none | none |
REQ-021-245 Print usage examples to stderr on missing arguments |
none | none |
REQ-021-246 Auto-detect orchestrata workspace from CWD |
none | none |
REQ-021-247 Retrieve project ID via (p:Project)-[:HAS_FILE]->(f:File) query |
none | none |
REQ-021-248 Rewrite File path queries to anchor through (p:Project)-[:HAS_FILE]-> |
none | none |
REQ-021-249 Rewrite Spec ID queries to anchor through (p:Project)-[:HAS_SPEC]-> |
none | none |
REQ-021-250 Rewrite Requirement ID queries to anchor through (p:Project)-[:HAS_REQUIREMENT]-> |
none | none |
REQ-021-251 General MATCH queries get WHERE EXISTS clause checking 30+ relationship types |
none | none |
REQ-021-252 Project scoping uses case-insensitive regex pattern matching |
none | none |
REQ-021-253 Fallback wrapping for unrecognized query patterns |
none | none |
REQ-021-254 Change to orchestrata workspace directory |
none | none |
REQ-021-255 Run kg_query_inner.py via uv run python3 |
none | none |
REQ-021-256 Pass through all command-line arguments |
none | none |
REQ-021-257 Fallback mock classes defined if orchestrata imports fail |
none | none |
REQ-021-258 Import error printed to stderr (not stdout) |
none | none |
REQ-021-259 Same connection and query interface as kg_query.py |
none | none |
REQ-021-260 Minimal implementation for connection verification |
none | none |
REQ-021-261 Same path setup and query interface as kg_query.py |
none | none |
REQ-021-262 toolCallHistory array initialized empty on plugin load |
none | none |
REQ-021-263 readCount counter initialized to 0 on plugin load |
none | none |
REQ-021-264 MCP_SERVERS array defines document-reader (3456) and document-writer (3457) |
none | none |
REQ-021-265 Plugin activates only for directories under /home/mohamed/workspace |
none | none |
REQ-021-266 Plugin returns empty object {} for directories outside workspace |
none | none |
REQ-021-267 SESSION_CLI path set to python3 ~/.claude/tools/session_cli.py |
none | none |
REQ-021-268 PROJECT_ROOT set to the directory parameter |
none | none |
REQ-021-269 All log messages use service name "orchestrata-plugin" |
none | none |
REQ-021-270 Log levels: info (normal), warn (non-critical failures), error (critical failures),... |
none | none |
REQ-021-271 Plugin activation logged on startup with project name and directory |
none | none |
REQ-021-272 "close the session" detected as close request |
none | none |
REQ-021-273 "cts" detected as close request |
none | none |
REQ-021-274 "cs" detected as close request |
none | none |
REQ-021-275 "end session" detected as close request |
none | none |
REQ-021-276 "finish session" detected as close request |
none | none |
REQ-021-277 Close validates active session exists |
none | none |
REQ-021-278 Close extracts achievements from git log (last 2 hours, top 20, filter checkpoints) |
none | none |
REQ-021-279 Close ends session via session_cli.py |
none | none |
REQ-021-280 Close pushes branch to origin |
none | none |
REQ-021-281 Close displays formatted report with session number, achievements, push status |
none | none |
REQ-021-282 Close clears toolCallHistory and readCount |
none | none |
REQ-021-283 Close failure displayed as error message |
none | none |
REQ-021-284 Praise patterns (looks good, great work, well done) logged |
none | none |
REQ-021-285 Thanks patterns (thanks, thank you, appreciate) logged |
none | none |
REQ-021-286 Fix confirmation patterns (that works, fixed it, solved it) logged |
none | none |
REQ-021-287 Completion detection is non-blocking |
none | none |
REQ-021-288 experimental.session.compacting injects session context |
none | none |
REQ-021-289 Context includes active session seq, purpose, achievements, carryover tasks |
none | none |
REQ-021-290 Session status retrieved via session_cli.py status --json (first 1000 chars) |
none | none |
REQ-021-291 Compacting hook is non-blocking |
none | none |
REQ-021-292 File operations (edit, write, delete) logged via session_cli.py log-work |
none | none |
REQ-021-293 Write operations additionally logged via session_cli.py log-artifact |
none | none |
REQ-021-294 Failed tool operations logged as warnings to client.app.log |
none | none |
REQ-021-295 Operation logging is non-blocking |
none | none |