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 L26
orchestrata_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 L488
orchestrata_ultimate/knowledge_graph/conversation_consumer depth L709
tests/scripts/test_redis_exec.py::test_incr_round_trip
tests/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 L461
orchestrata_ultimate/knowledge_graph/conversation_consumer claim L453
orchestrata_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 L259
orchestrata_ultimate/knowledge_graph/conversation_consumer flush L648
orchestrata_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 L934
orchestrata_ultimate/knowledge_graph/canonical_schema conversation_turn_entity_id L989
orchestrata_ultimate/knowledge_graph/conversation_consumer to_statements L507
tests/claude/test_claude_turn_capture_coverage.py::f
tests/scripts/test_irc_conversation_capture.py::_drain_privmsgs
tests/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_capture
tests/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_capture
tests/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 L575
orchestrata_ultimate/kernel/cli_main get_metadata L567
orchestrata_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 L575
orchestrata_ultimate/kernel/cli_main stop L560
orchestrata_ultimate/knowledge_graph/conversation_consumer flush L648
tests/kernel/test_cli_main_conversation_boot.py::test_conversation_consumer_component_stop_swallows_flush_errors
tests/scripts/test_irc_conversation_capture.py::_expect_contains
tests/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_loss
tests/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 L709
orchestrata_ultimate/tools/conversation_tools execute L55
none
REQ-021-217 conv-sync flushes conversation queue to Neo4j orchestrata_ultimate/knowledge_graph/conversation_consumer FlushReport L607
orchestrata_ultimate/knowledge_graph/conversation_consumer to_summary L617
orchestrata_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