Reading additional input from stdin...
OpenAI Codex v0.125.0 (research preview)
--------
workdir: /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
model: gpt-5.5
provider: openai
approval: never
sandbox: read-only
reasoning effort: medium
reasoning summaries: none
session id: 019dcf60-77c9-7903-b896-3c55a6e3ca22
--------
user
What functions in the system-spec-kit mcp_server call memory_context? List 3-10 callers with file:line references.
hook: SessionStart
hook: SessionStart
hook: SessionStart Completed
hook: SessionStart Completed
hook: UserPromptSubmit
hook: UserPromptSubmit
hook: UserPromptSubmit Completed
hook: UserPromptSubmit Completed
codex
I’ll answer this as a read-only code lookup. The target is exact enough that `rg` should be the fastest path, then I’ll verify the surrounding definitions for clean caller names.
mcp: spec_kit_memory/memory_match_triggers started
mcp: spec_kit_memory/memory_match_triggers (failed)
user cancelled MCP tool call
exec
/bin/zsh -lc 'python3 .opencode/skills/system-spec-kit/mcp_server/skill_advisor/scripts/skill_advisor.py "What functions in the system-spec-kit mcp_server call memory_context? List 3-10 callers with file:line references." --threshold 0.8' in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 2948ms:
2026-04-27 16:38:37.928 xcodebuild[57330:5403663]  DVTFilePathFSEvents: Failed to start fs event stream.
2026-04-27 16:38:38.135 xcodebuild[57330:5403662] [MT] DVTDeveloperPaths: Failed to get length of DARWIN_USER_CACHE_DIR from confstr(3), error = Error Domain=NSPOSIXErrorDomain Code=5 "Input/output error". Using NSCachesDirectory instead.
python3: warning: confstr() failed with code 5: couldn't get path of DARWIN_USER_TEMP_DIR; using /tmp instead
python3: error: couldn't create cache file '/tmp/xcrun_db-vO62NBw6' (errno=Operation not permitted)
2026-04-27 16:38:38.570 xcodebuild[57475:5404062]  DVTFilePathFSEvents: Failed to start fs event stream.
2026-04-27 16:38:38.685 xcodebuild[57475:5404047] [MT] DVTDeveloperPaths: Failed to get length of DARWIN_USER_CACHE_DIR from confstr(3), error = Error Domain=NSPOSIXErrorDomain Code=5 "Input/output error". Using NSCachesDirectory instead.
[]

codex
Skill routing returned no required specialist for this lookup. The memory trigger call was cancelled by the MCP surface, so I’m proceeding from direct code evidence and keeping this read-only.
exec
/bin/zsh -lc "rg --files .opencode/skills/system-spec-kit/mcp_server | rg \"\\.(js|cjs|mjs|ts|py)"'$"' in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
.opencode/skills/system-spec-kit/mcp_server/context-server.ts
.opencode/skills/system-spec-kit/mcp_server/eslint.config.mjs
.opencode/skills/system-spec-kit/mcp_server/plugin_bridges/spec-kit-opencode-message-schema.mjs
.opencode/skills/system-spec-kit/mcp_server/plugin_bridges/spec-kit-skill-advisor-bridge.mjs
.opencode/skills/system-spec-kit/mcp_server/plugin_bridges/spec-kit-compact-code-graph-bridge.mjs
.opencode/skills/system-spec-kit/mcp_server/vitest.config.ts
.opencode/skills/system-spec-kit/mcp_server/schemas/tool-input-schemas.ts
.opencode/skills/system-spec-kit/mcp_server/core/db-state.ts
.opencode/skills/system-spec-kit/mcp_server/core/config.ts
.opencode/skills/system-spec-kit/mcp_server/core/index.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/handlers/index.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/handlers/advisor-status.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/handlers/advisor-validate.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/handlers/advisor-recommend.ts
.opencode/skills/system-spec-kit/mcp_server/api/index.ts
.opencode/skills/system-spec-kit/mcp_server/api/providers.ts
.opencode/skills/system-spec-kit/mcp_server/api/storage.ts
.opencode/skills/system-spec-kit/mcp_server/api/search.ts
.opencode/skills/system-spec-kit/mcp_server/api/eval.ts
.opencode/skills/system-spec-kit/mcp_server/api/indexing.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-crud-types.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-ingest.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-bulk-delete.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-triggers.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-crud.ts
.opencode/skills/system-spec-kit/mcp_server/tools/context-tools.ts
.opencode/skills/system-spec-kit/mcp_server/tools/index.ts
.opencode/skills/system-spec-kit/mcp_server/tools/skill-graph-tools.ts
.opencode/skills/system-spec-kit/mcp_server/tools/types.ts
.opencode/skills/system-spec-kit/mcp_server/tools/causal-tools.ts
.opencode/skills/system-spec-kit/mcp_server/tools/memory-tools.ts
.opencode/skills/system-spec-kit/mcp_server/tools/lifecycle-tools.ts
.opencode/skills/system-spec-kit/mcp_server/tools/checkpoint-tools.ts
.opencode/skills/system-spec-kit/mcp_server/tests/spec-kit-skill-advisor-plugin.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/governance-e2e.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tools/index.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tools/advisor-status.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tools/advisor-validate.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tools/advisor-recommend.ts
.opencode/skills/system-spec-kit/mcp_server/utils/db-helpers.ts
.opencode/skills/system-spec-kit/mcp_server/utils/tool-input-schema.ts
.opencode/skills/system-spec-kit/mcp_server/utils/json-helpers.ts
.opencode/skills/system-spec-kit/mcp_server/utils/index.ts
.opencode/skills/system-spec-kit/mcp_server/utils/validators.ts
.opencode/skills/system-spec-kit/mcp_server/utils/batch-processor.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/skill-graph/query.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/skill-graph/index.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/skill-graph/validate.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/skill-graph/scan.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/skill-graph/status.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/bench/code-graph-parse-latency.bench.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/bench/scorer-calibration.bench.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/bench/scorer-bench.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/bench/watcher-benchmark.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/bench/hook-brief-signal-noise.bench.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/bench/code-graph-query-latency.bench.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/bench/latency-bench.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/session-learning.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-search.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/handler-utils.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/causal-graph.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/handlers/query.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/handlers/index.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/handlers/ccc-reindex.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/handlers/context.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/handlers/detect-changes.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/handlers/scan.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/handlers/ccc-feedback.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/handlers/verify.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/handlers/status.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/handlers/ccc-status.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/schemas/skill-derived-v2.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/schemas/advisor-tool-schemas.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/schemas/daemon-status.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/schemas/generation-metadata.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tests/phase-runner.test.ts
.opencode/skills/system-spec-kit/mcp_server/lib/session/session-manager.ts
.opencode/skills/system-spec-kit/mcp_server/lib/session/session-snapshot.ts
.opencode/skills/system-spec-kit/mcp_server/lib/session/context-metrics.ts
.opencode/skills/system-spec-kit/mcp_server/formatters/index.ts
.opencode/skills/system-spec-kit/mcp_server/formatters/search-results.ts
.opencode/skills/system-spec-kit/mcp_server/formatters/token-metrics.ts
.opencode/skills/system-spec-kit/mcp_server/cli.ts
.opencode/skills/system-spec-kit/mcp_server/lib/codex-hook-policy.ts
.opencode/skills/system-spec-kit/mcp_server/startup-checks.ts
.opencode/skills/system-spec-kit/mcp_server/tests/spec-doc-structure.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/d5-recovery-payload.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/integration-error-recovery.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/cross-encoder-circuit-breaker.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/opencode-plugins-folder-purity.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context.resume-gate-d.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/chunking-orchestrator.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/tool-input-schema.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hook-session-stop.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/confidence-truncation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-save-extended.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-regression-session-dedup.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/assistive-reconsolidation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/reranker-eval-comparison.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/anchor-metadata.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/pe-gating.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hook-session-stop-replay.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/symlink-realpath-hardening.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/adaptive-ranking-e2e.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/prompt-policy.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/freshness.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/normalize-adapter-output.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/metrics.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/skill-advisor-brief.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/generation.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/render.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/coverage-graph/convergence.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/coverage-graph/query.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/coverage-graph/index.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/coverage-graph/upsert.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/coverage-graph/status.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/quality-loop.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/eval-reporting.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-index.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-crud-stats.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/chunking-orchestrator.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-save.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-crud-utils.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/v-rule-bridge.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-index-alias.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/pe-gating.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-crud-update.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/session-resume.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/index.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/session-bootstrap.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/mutation-hooks.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-crud-list.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/session-health.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-crud-health.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/types.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/checkpoints.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/causal-links-processor.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-index-discovery.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/reconsolidation-bridge.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/markdown-evidence-builder.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/dedup.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/post-insert.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/response-builder.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/validation-responses.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/pe-orchestration.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-crud-delete.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/create-record.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/embedding-pipeline.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/types.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/index.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/atomic-index-memory.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/spec-folder-mutex.ts
.opencode/skills/system-spec-kit/mcp_server/handlers/save/db-helpers.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tests/code-graph-query-handler.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tests/code-graph-ops-hardening.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tests/code-graph-siblings-readiness.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tests/code-graph-verify.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tests/code-graph-context-handler.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tests/code-graph-indexer.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tests/edge-drift.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tests/detect-changes.test.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tests/code-graph-seed-resolver.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tests/code-graph-scan.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tests/edge-metadata-sanitize.test.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/budget-allocator.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/structural-indexer.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/gold-query-verifier.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/runtime-detection.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/ensure-ready.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/diff-parser.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/phase-runner.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/index.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/indexer-types.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/readiness-contract.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/tree-sitter-parser.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/working-set-tracker.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/edge-drift.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/query-intent-classifier.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/code-graph-context.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/compat/index.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/freshness/generation.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/freshness/trust-state.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/freshness/rebuild-from-source.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/freshness/cache-invalidation.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/subprocess.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/source-cache.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tools/code-graph-tools.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/tools/index.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/ops-hardening.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/code-graph-db.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/seed-resolver.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/compact-merger.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/query-result-adapter.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/startup-brief.ts
.opencode/skills/system-spec-kit/mcp_server/tests/reconsolidation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/integration-checkpoint-lifecycle.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/query-surrogates.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/anchor-merge-operation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/save-index-exports.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/p0-b-reconsolidation-composite.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/interference.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/unit-rrf-fusion.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/stage2b-enrichment-extended.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/history.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/mpab-aggregation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/lib/utils/format-helpers.ts
.opencode/skills/system-spec-kit/mcp_server/lib/utils/logger.ts
.opencode/skills/system-spec-kit/mcp_server/lib/utils/cocoindex-path.ts
.opencode/skills/system-spec-kit/mcp_server/lib/utils/cleanup-helpers.ts
.opencode/skills/system-spec-kit/mcp_server/lib/utils/index-scope.ts
.opencode/skills/system-spec-kit/mcp_server/lib/utils/path-security.ts
.opencode/skills/system-spec-kit/mcp_server/lib/utils/exhaustiveness.ts
.opencode/skills/system-spec-kit/mcp_server/lib/utils/canonical-path.ts
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/utils/workspace-path.ts
.opencode/skills/system-spec-kit/mcp_server/tests/codex-user-prompt-submit-hook.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/promotion-positive-validation-semantics.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/token-snapshot-store.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/validation-metadata.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/progressive-validation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-manager-stress.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/rollout-policy.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/trigger-setAttentionScore.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-checkpoints.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-save-fallback-fingerprint.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/score-normalization.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/provenance-envelope.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/regression-010-index-large-files.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/crash-recovery.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/scope-governance-normalizer-parity.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/tier-classifier.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/unit-fsrs-formula.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-regression-ablation-drift.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/fsrs-scheduler.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-save-integration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/eval-the-eval.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/usage-weighted-ranking.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hybrid-decay-policy.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/cleanup-script-audit-emission.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-bootstrap.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hybrid-search.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph-regression-flag-off.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-memory-index.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/typed-traversal.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/migration-lineage-identity.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/lifecycle-shutdown.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-save-ux-regressions.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/attention-decay.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/search-extended.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/lib/interfaces/vector-store.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/affordance-normalizer.test.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/skill-graph-db.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/continuity/timestamp-normalize.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph-metadata-schema.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/decay-delete-race.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/incremental-index-v2.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-helpers.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/codex-hook-policy.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/short-critical-quality-gate.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/intent-classifier.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/integration-save-pipeline.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/causal-boost.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/lib/spec/is-phase-parent.ts
.opencode/skills/system-spec-kit/mcp_server/lib/spec/spec-level.ts
.opencode/skills/system-spec-kit/mcp_server/lib/analytics/session-analytics-db.ts
.opencode/skills/system-spec-kit/mcp_server/tests/adversarial/compact-prime-identity-race.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph-flags.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/scoring-gaps.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/embeddings.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/composite-scoring.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hook-state.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/opencode-transport.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/handlers/advisor-recommend.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/handlers/advisor-validate.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/handlers/advisor-status.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/daemon-freshness-foundation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/lifecycle-derived-metadata.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/routing-fixtures.affordance.test.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/daemon/lifecycle.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/daemon/watcher.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/daemon/lease.ts
.opencode/skills/system-spec-kit/mcp_server/tests/empty-result-recovery.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/copilot-hook-wiring.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-regression-reconsolidation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/search-limits-scoring.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/runtime-detection.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-manager.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/content-normalizer.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/readiness-contract.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/co-activation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/workflow-memory-tracking.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-save.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/interfaces.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/p0-d-toctou-cleanup-regression.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/working-memory-event-decay.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/folder-discovery.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/query-decomposition.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/n3lite-consolidation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/caller-context.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/embedding-cache.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/concept-routing.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-learning-regressions.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/claude-user-prompt-submit-hook.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/retrieval-directives.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory/trust-badges.test.ts
.opencode/skills/system-spec-kit/mcp_server/tests/file-watcher.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/flag-ceiling.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-learning.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/smart-router-analyze.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/degree-computation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/stdio-logging-safety.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/m8-trust-state-vocabulary.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-boost.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/community-search.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/copilot-compact-cycle.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/learning-stats-filters.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-memory-crud.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/folder-scoring-overflow.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph-lifecycle.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/channel-representation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/spec-folder-prefilter.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/search-flags.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/context-server-error-envelope.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/embedding-expansion.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/config-cognitive.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/mpab-quality-gate-integration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/thin-continuity-record.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/query-classifier.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-benchmark-memory-search.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/shadow-evaluation-runtime.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/artifact-routing.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/d5-confidence-scoring.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/query-decomposer.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/scoring.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/retry-budget.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/follow-up-api.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/query-router.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/concept-extraction.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/tool-cache.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/api-public-surfaces.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/deferred-features-integration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph-roadmap-finalization.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/folder-scoring.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-memory-list-edge.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/confidence-tracker.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hook-precompact.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/transaction-manager-extended.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hooks-mutation-wiring.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/integration-causal-graph.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/remediation-008-docs.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/safety.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/ablation-framework.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/recovery-hints.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-resume.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hybrid-search-context-headers.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-regression-constitutional-memory.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/bm25-security.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-memory-save.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-regression-trigger-fast-match.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/codex-session-start-hook.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/retrieval-trace.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/adaptive-ranking.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/lib/graph/community-storage.ts
.opencode/skills/system-spec-kit/mcp_server/lib/graph/graph-metadata-schema.ts
.opencode/skills/system-spec-kit/mcp_server/lib/graph/contradiction-detection.ts
.opencode/skills/system-spec-kit/mcp_server/lib/graph/graph-metadata-parser.ts
.opencode/skills/system-spec-kit/mcp_server/lib/graph/community-detection.ts
.opencode/skills/system-spec-kit/mcp_server/lib/graph/graph-signals.ts
.opencode/skills/system-spec-kit/mcp_server/lib/graph/usage-tracking.ts
.opencode/skills/system-spec-kit/mcp_server/lib/graph/usage-ranking-signal.ts
.opencode/skills/system-spec-kit/mcp_server/lib/graph/community-summaries.ts
.opencode/skills/system-spec-kit/mcp_server/lib/graph/temporal-edges.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-benchmark-trigger-fast-path.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/copilot-user-prompt-submit-hook.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/working-memory.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/shadow-scoring.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/archive/coverage-graph-db.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/archive/coverage-graph-tools.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/codex-prompt-wrapper.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/job-queue.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/causal-edges-unit.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/channel-enforcement.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/anchor-prefix-matching.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/regression-suite.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/trigger-config-extended.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/checkpoint-working-memory.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-memory-health-edge.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/feature-flag-reference-docs.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/unit-tier-classifier-types.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-session-learning.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/structure-aware-chunker.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/slug-utils-boundary.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-crud-update-constitutional-guard.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/reporting-dashboard.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/trigger-extractor.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/budget-allocator.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/integration-learning-history.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/community-detection.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/chunk-thinning.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/tree-sitter-parser.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/temporal-edges.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-regression-quality-gates.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-memory-ingest.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/query-expander.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/integration-138-pipeline.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context-eval-channels.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hook-stop-token-tracking.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/transaction-manager-recovery.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/query-router-channel-interaction.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hooks-reexport-parity.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/pe-orchestration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/compact-merger.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/modularization.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/structural-trust-axis.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/transcript-planner-export.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/dead-code-regression.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/embedding-weighting.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-search-eval-channels.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/decay.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/api-validation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/pipeline-integration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/runtime-routing.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/intent-paraphrase-stability.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/transaction-manager.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/learned-feedback.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-token-resume.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/embedding-circuit-breaker.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/edge-density.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/create-record-identity.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/mmr-reranker.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/cross-runtime-fallback.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/quality-gate-exception.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/signal-vocab.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/orchestrator-error-cascade.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/sqlite-fts.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/corrections.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-regression-embedding-semantic-search.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/vector-index-impl.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph-scoring-integration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/smart-router-telemetry.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/query-intent-classifier.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/lazy-loading.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/tiered-injection-turnNumber.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/progressive-disclosure.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/token-budget-enforcement.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/rrf-fusion.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/access-tracker-extended.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/pipeline-v2.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/reranker.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/eval-db.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/stage3-rerank-regression.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/incremental-index.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-regression-intent-routing.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/codex-pre-tool-use.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/ambiguity.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/weights-config.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/ablation.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/types.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/fixtures/lifecycle/index.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/lane-attribution.test.ts
.opencode/skills/system-spec-kit/mcp_server/lib/resume/resume-ladder.ts
.opencode/skills/system-spec-kit/mcp_server/tests/_support/vitest-setup.ts
.opencode/skills/system-spec-kit/mcp_server/tests/_support/token-budget-assertions.ts
.opencode/skills/system-spec-kit/mcp_server/tests/feedback-ledger.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/feature-eval-scoring-calibration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/pipeline-architecture-remediation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/parity/python-ts-parity.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/lanes/explicit.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/lanes/graph-causal.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/lanes/lexical.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/lanes/semantic-shadow.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/lanes/derived.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/scoring-constants.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/attribution.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/fusion.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/text.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/scorer/projection.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/hooks/settings-driven-invocation-parity.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/manual-testing-playbook.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/lib/coverage-graph/coverage-graph-query.ts
.opencode/skills/system-spec-kit/mcp_server/lib/coverage-graph/coverage-graph-signals.ts
.opencode/skills/system-spec-kit/mcp_server/lib/coverage-graph/coverage-graph-db.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph/graph-metadata-lineage.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/adaptive-fusion.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/structural-contract.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph-first-routing-nudge.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/phase2-integration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/preflight.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/rrf-degree-channel.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/cache/listener-uniqueness.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/migration-checkpoint-scripts.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-state.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/post-insert-deferred.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/spec-folder-canonicalization.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-memory-stats-edge.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/review-fixes.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/prediction-error-gate.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/entity-linker.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/layer-definitions.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/checkpoints-storage.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/cross-encoder.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/embedding-retry-stats.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-eval-reporting.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/coverage-graph-signals.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/bm25-index.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-parser-extended.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-checkpoints-edge.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/unit-transaction-metrics-types.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/access-tracker.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/intent-weighting.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/mcp-input-validation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/token-budget.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/vector-index-store-remediation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/protect-learning.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-save-index-scope.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/lib/validation/spec-doc-structure.ts
.opencode/skills/system-spec-kit/mcp_server/lib/validation/save-quality-gate.ts
.opencode/skills/system-spec-kit/mcp_server/lib/validation/preflight.ts
.opencode/skills/system-spec-kit/mcp_server/tests/_support/hooks/replay-harness.ts
.opencode/skills/system-spec-kit/mcp_server/lib/providers/retry-manager.ts
.opencode/skills/system-spec-kit/mcp_server/lib/providers/embeddings.ts
.opencode/skills/system-spec-kit/mcp_server/tests/dual-scope-hooks.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/adaptive-fallback.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/checkpoint-limit.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/redaction-gate.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/score-resolution-consistency.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/coverage-graph-status.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/save-quality-gate.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/opencode-plugin.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/schema-migration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/db-state-graph-reinit.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hybrid-search-flags.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/local-reranker.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-bootstrap-gate-d.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/p0-a-cross-runtime-tempdir-poisoning.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/learned-combiner.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/calibrated-overlap-bonus.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/envelope.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/unit-folder-scoring-types.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/errors-comprehensive.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/encoding-intent.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hook-session-start.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/chunking-orchestrator-swap.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-memory-context.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/vector-index-schema-compatibility.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/db-dimension-integrity.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-resume-perf.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/edge-cases.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/integration-search-pipeline.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/causal-edges.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/folder-relevance.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/index-scope.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/unit-normalization-roundtrip.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/utils/error-format.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/utils/json-guard.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/utils/workspace-root.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/utils/skill-markdown.ts
.opencode/skills/system-spec-kit/mcp_server/tests/vector-index-store.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-lineage-state.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/vector-index-schema-migration-refinements.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-manager-extended.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-summaries.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/query-flow-tracker.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/mutation-hooks.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/mutation-ledger.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/shadow-scoring-holdout.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/bm25-baseline.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/temporal-contiguity.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/consumption-logger.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/feedback-denylist.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/fsrs-hybrid-decay.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-search-integration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/skill-graph-schema.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/error-diagnostics.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-regression-4-stage-search-pipeline.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph-metadata-integration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/code-graph-query-fallback-decision.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/cross-feature-integration-eval.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/integration-trigger-pipeline.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/resume-ladder.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/cognitive-gaps.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/code-graph-db.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-lifecycle.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hooks-shared-provenance.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/error-sanitization.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/mcp-response-envelope.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/security/adversarial-unicode.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/response-profile-formatters.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/intent-aware-traversal.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/create-record-lineage-regressions.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/contradiction-detection.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/sparse-first-graph.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/skill-graph-handlers.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-save-planner-first.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/walker-dos-caps.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/full-spec-doc-indexing.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-governance.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/content-hash-dedup.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/batch-processor.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/importance-tiers.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/ground-truth.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/five-factor-scoring.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/stage1-expansion.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/startup-checks.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/compat/daemon-probe.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/compat/redirect-metadata.ts
.opencode/skills/system-spec-kit/mcp_server/tests/cli.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/exhaustiveness.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-memory-ingest-edge.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/retrieval-telemetry.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/shared-payload-advisor.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/deep-loop-graph-query.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/folder-discovery-integration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-regression-fsrs-cognitive-decay.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/exclusion-ssot-unification.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-causal-graph.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph-calibration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph-payload-validator.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-memory-index-cooldown.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/k-value-judged-sweep.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph-signals.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-roadmap-flags.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-regression-causal-graph.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-search-ux-hooks.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-parser.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/embedding-pipeline-weighting.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/trace-propagation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/scoring-observability.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context-session-state.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-trigger-perf-benchmark.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/content-router.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/evidence-gap-detector.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/compat/shim.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/compat/daemon-probe.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/compat/redirect-metadata.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/compat/python-compat.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/compat/plugin-bridge.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/run-enrichment-step.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/search-fallback-tiered.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/ensure-ready.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/feature-eval-query-intelligence.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/publication-gate.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-analytics-db.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/integration-session-dedup.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/db-state.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/checkpoint-restore-invariant-enforcement.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-tools.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/quality-loop.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gemini-user-prompt-submit-hook.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-state-baseline.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/context-metrics.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-cleanup.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/reconsolidation-cleanup-ordering.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/unit-composite-scoring-types.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/checkpoint-completeness.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/dynamic-token-budget.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/retry-manager-health.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/feature-eval-graph-signals.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-lineage-backfill.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/constitutional-filtering.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-save-dedup-order.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-delete-cascade.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-resume-auth.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/p0-c-graph-metadata-laundering.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/trigger-matcher.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/continue-session.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/api-key-validation.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/extraction-adapter.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/result-confidence-scoring.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/checkpoints-extended.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/causal-fixes.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/eval-logger.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/batch-learning.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-crud-extended.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph-aware-stop.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-types.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/cross-encoder-extended.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/search-archival.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/path-boundary.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/hooks-ux-feedback.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/legacy/advisor-freshness.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/legacy/advisor-corpus-parity.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/legacy/advisor-prompt-policy.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/legacy/advisor-timing.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/lib/skill-graph/skill-graph-queries.ts
.opencode/skills/system-spec-kit/mcp_server/lib/skill-graph/skill-graph-db.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/legacy/advisor-subprocess.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/legacy/advisor-observability.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/legacy/advisor-graph-health.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/legacy/advisor-brief-producer.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/legacy/advisor-renderer.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/legacy/advisor-prompt-cache.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/legacy/advisor-graph-evidence-calibration.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/legacy/advisor-privacy.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/content-router-cache.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/smart-router-measurement.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/spec-folder-hierarchy.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/reconsolidation-bridge.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/search-results-format.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/intent-routing.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/cold-start.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/graph-search-fn.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-memory-search.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/job-queue-state-edge.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/entity-extractor.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/session-health.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/unit-normalization.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-benchmark-session-resume.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/stage2-fusion.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/k-value-optimization.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/ground-truth-feedback.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/retry-manager.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/pressure-monitor.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/mcp-error-format.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/unit-path-security.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/handler-memory-triggers.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/startup-brief.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/retry-budget-telemetry.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/mcp-tool-dispatch.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/eval-metrics.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/lifecycle/supersession.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/lifecycle/schema-migration.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/lifecycle/age-haircut.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/lifecycle/rollback.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/lifecycle/archive-handling.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/affordance-normalizer.ts
.opencode/skills/system-spec-kit/mcp_server/tests/deep-loop/cli-matrix.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/deep-loop/executor-audit.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/deep-loop/prompt-pack.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/deep-loop/dispatch-failure.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/deep-loop/post-dispatch-validate.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/deep-loop/executor-config.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/atomic-index-memory.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/shadow-comparison.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-search-quality-filter.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/gate-d-regression-memory-tiers.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-save-pipeline-enforcement.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/stage2b-enrichment.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/legacy/advisor-runtime-parity.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/fixtures/runtime-fixtures.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/prompt-cache.ts
.opencode/skills/system-spec-kit/mcp_server/lib/learning/index.ts
.opencode/skills/system-spec-kit/mcp_server/lib/learning/corrections.ts
.opencode/skills/system-spec-kit/mcp_server/lib/errors.ts
.opencode/skills/system-spec-kit/mcp_server/lib/extraction/redaction-gate.ts
.opencode/skills/system-spec-kit/mcp_server/lib/extraction/entity-extractor.ts
.opencode/skills/system-spec-kit/mcp_server/lib/extraction/extraction-adapter.ts
.opencode/skills/system-spec-kit/mcp_server/lib/extraction/ontology-hooks.ts
.opencode/skills/system-spec-kit/mcp_server/lib/extraction/entity-denylist.ts
.opencode/skills/system-spec-kit/mcp_server/tests/validation/evidence-marker-audit.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/scripts/skill_advisor_bench.py
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/scripts/skill_graph_compiler.py
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/scripts/skill_advisor_runtime.py
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/corpus/df-idf.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/scripts/skill_advisor.py
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/scripts/skill_advisor_regression.py
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/python/test_skill_advisor.py
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/derived/provenance.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/derived/extract.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/derived/anti-stuffing.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/derived/trust-lanes.ts
.opencode/skills/system-spec-kit/mcp_server/tool-schemas.ts
.opencode/skills/system-spec-kit/mcp_server/lib/config/memory-types.ts
.opencode/skills/system-spec-kit/mcp_server/lib/config/type-inference.ts
.opencode/skills/system-spec-kit/mcp_server/lib/config/spec-doc-paths.ts
.opencode/skills/system-spec-kit/mcp_server/lib/config/capability-flags.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/derived/sync.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/lib/derived/sanitizer.ts
.opencode/skills/system-spec-kit/mcp_server/lib/parsing/content-normalizer.ts
.opencode/skills/system-spec-kit/mcp_server/lib/parsing/trigger-matcher.ts
.opencode/skills/system-spec-kit/mcp_server/lib/parsing/memory-parser.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/scripts/routing-accuracy/score-routing-corpus.py
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/scripts/routing-accuracy/gate3-corpus-runner.mjs
.opencode/skills/system-spec-kit/mcp_server/lib/continuity/thin-continuity-record.ts
.opencode/skills/system-spec-kit/mcp_server/lib/continuity/timestamp-normalize.ts
.opencode/skills/system-spec-kit/mcp_server/configs/cognitive.ts
.opencode/skills/system-spec-kit/mcp_server/scripts/map-ground-truth-ids.ts
.opencode/skills/system-spec-kit/mcp_server/scripts/reindex-embeddings.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/response-hints.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/memory-surface.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/index.ts
.opencode/skills/system-spec-kit/mcp_server/lib/deep-loop/prompt-pack.ts
.opencode/skills/system-spec-kit/mcp_server/lib/deep-loop/executor-audit.ts
.opencode/skills/system-spec-kit/mcp_server/lib/deep-loop/post-dispatch-validate.ts
.opencode/skills/system-spec-kit/mcp_server/lib/deep-loop/executor-config.ts
.opencode/skills/system-spec-kit/mcp_server/scripts/tests/resource-map-extractor.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/description/repair-specimens.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/lib/merge/anchor-merge-operation.ts
.opencode/skills/system-spec-kit/mcp_server/lib/governance/scope-governance.ts
.opencode/skills/system-spec-kit/mcp_server/lib/enrichment/passive-enrichment.ts
.opencode/skills/system-spec-kit/mcp_server/lib/enrichment/retry-budget.ts
.opencode/skills/system-spec-kit/mcp_server/scripts/migrations/restore-checkpoint.ts
.opencode/skills/system-spec-kit/mcp_server/scripts/migrations/create-checkpoint.ts
.opencode/skills/system-spec-kit/mcp_server/tests/description/description-merge.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/tests/description/repair.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/lib/errors/index.ts
.opencode/skills/system-spec-kit/mcp_server/lib/errors/core.ts
.opencode/skills/system-spec-kit/mcp_server/lib/errors/recovery-hints.ts
.opencode/skills/system-spec-kit/mcp_server/lib/cache/embedding-cache.ts
.opencode/skills/system-spec-kit/mcp_server/lib/cache/tool-cache.ts
.opencode/skills/system-spec-kit/mcp_server/lib/description/repair.ts
.opencode/skills/system-spec-kit/mcp_server/lib/description/description-schema.ts
.opencode/skills/system-spec-kit/mcp_server/lib/description/description-merge.ts
.opencode/skills/system-spec-kit/mcp_server/lib/ops/job-queue.ts
.opencode/skills/system-spec-kit/mcp_server/lib/ops/file-watcher.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/codex/pre-tool-use.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/codex/session-start.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/codex/setup.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/codex/user-prompt-submit.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/codex/prompt-wrapper.ts
.opencode/skills/system-spec-kit/mcp_server/skill_advisor/tests/scorer/native-scorer.vitest.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/ground-truth-feedback.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/edge-density.ts
.opencode/skills/system-spec-kit/mcp_server/lib/cognitive/working-memory.ts
.opencode/skills/system-spec-kit/mcp_server/lib/cognitive/tier-classifier.ts
.opencode/skills/system-spec-kit/mcp_server/lib/cognitive/rollout-policy.ts
.opencode/skills/system-spec-kit/mcp_server/lib/cognitive/pressure-monitor.ts
.opencode/skills/system-spec-kit/mcp_server/lib/cognitive/adaptive-ranking.ts
.opencode/skills/system-spec-kit/mcp_server/lib/cognitive/attention-decay.ts
.opencode/skills/system-spec-kit/mcp_server/lib/cognitive/prediction-error-gate.ts
.opencode/skills/system-spec-kit/mcp_server/lib/cognitive/co-activation.ts
.opencode/skills/system-spec-kit/mcp_server/lib/cognitive/temporal-contiguity.ts
.opencode/skills/system-spec-kit/mcp_server/lib/cognitive/fsrs-scheduler.ts
.opencode/skills/system-spec-kit/mcp_server/lib/response/profile-formatters.ts
.opencode/skills/system-spec-kit/mcp_server/lib/response/envelope.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/memory-state-baseline.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/ground-truth-generator.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/k-value-analysis.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/shadow-scoring.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/ablation-framework.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/ground-truth-data.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/eval-logger.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/eval-db.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/eval-metrics.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/eval-quality-proxy.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/warm-start-variant-runner.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/reporting-dashboard.ts
.opencode/skills/system-spec-kit/mcp_server/lib/eval/bm25-baseline.ts
.opencode/skills/system-spec-kit/mcp_server/lib/architecture/layer-definitions.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/shared-provenance.ts
.opencode/skills/system-spec-kit/mcp_server/lib/routing/content-router.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/mutation-feedback.ts
.opencode/skills/system-spec-kit/mcp_server/lib/telemetry/eval-channel-tracking.ts
.opencode/skills/system-spec-kit/mcp_server/lib/telemetry/retrieval-telemetry.ts
.opencode/skills/system-spec-kit/mcp_server/lib/telemetry/consumption-logger.ts
.opencode/skills/system-spec-kit/mcp_server/lib/telemetry/trace-schema.ts
.opencode/skills/system-spec-kit/mcp_server/lib/telemetry/scoring-observability.ts
.opencode/skills/system-spec-kit/mcp_server/lib/chunking/chunk-thinning.ts
.opencode/skills/system-spec-kit/mcp_server/lib/chunking/anchor-chunker.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/claude-transcript.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/hook-state.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/shared.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/user-prompt-submit.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-stop.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/compact-inject.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/compact-cache.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/shared.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/user-prompt-submit.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-stop.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/compact-inject.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/compact-cache.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/custom-instructions.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/user-prompt-submit.ts
.opencode/skills/system-spec-kit/mcp_server/lib/scoring/composite-scoring.ts
.opencode/skills/system-spec-kit/mcp_server/lib/scoring/importance-tiers.ts
.opencode/skills/system-spec-kit/mcp_server/lib/scoring/folder-scoring.ts
.opencode/skills/system-spec-kit/mcp_server/lib/scoring/interference-scoring.ts
.opencode/skills/system-spec-kit/mcp_server/lib/scoring/negative-feedback.ts
.opencode/skills/system-spec-kit/mcp_server/lib/scoring/mpab-aggregation.ts
.opencode/skills/system-spec-kit/mcp_server/lib/scoring/confidence-tracker.ts
.opencode/skills/system-spec-kit/mcp_server/lib/feedback/feedback-ledger.ts
.opencode/skills/system-spec-kit/mcp_server/lib/feedback/shadow-evaluation-runtime.ts
.opencode/skills/system-spec-kit/mcp_server/lib/feedback/rank-metrics.ts
.opencode/skills/system-spec-kit/mcp_server/lib/feedback/query-flow-tracker.ts
.opencode/skills/system-spec-kit/mcp_server/lib/feedback/shadow-scoring.ts
.opencode/skills/system-spec-kit/mcp_server/lib/feedback/batch-learning.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/sqlite-fts.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/graph-search-fn.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/query-classifier.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/session-state.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/bm25-index.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/result-explainability.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/llm-reformulation.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/vector-index-aliases.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/channel-representation.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/vector-index-schema.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/folder-discovery.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/community-search.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/chunk-reassembly.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/vector-index-mutations.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/vector-index-impl.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/fsrs.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/channel-enforcement.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/progressive-disclosure.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/local-reranker.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/recovery-payload.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/hybrid-search.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/auto-promotion.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/learned-feedback.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/folder-relevance.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/hyde.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/confidence-truncation.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/vector-index-types.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/graph-flags.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/feedback-denylist.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/session-boost.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/evidence-gap-detector.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/surrogate-storage.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/llm-cache.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/graph-calibration.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/embedding-expansion.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/artifact-routing.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/vector-index-queries.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/search-utils.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/entity-linker.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/tfidf-summarizer.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/dynamic-token-budget.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/confidence-scoring.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/search-types.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/cross-encoder.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/vector-index.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/causal-boost.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/search-flags.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/anchor-metadata.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/deterministic-extractor.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/query-decomposer.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/session-transition.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/spec-folder-hierarchy.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/vector-index-store.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/query-router.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/query-expander.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/retrieval-directives.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/memory-summaries.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/query-surrogates.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/validation-metadata.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/encoding-intent.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/intent-classifier.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/graph-lifecycle.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/reranker.ts
.opencode/skills/system-spec-kit/mcp_server/lib/context/shared-payload.ts
.opencode/skills/system-spec-kit/mcp_server/lib/context/caller-context.ts
.opencode/skills/system-spec-kit/mcp_server/lib/context/opencode-transport.ts
.opencode/skills/system-spec-kit/mcp_server/lib/context/publication-gate.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/learned-triggers-schema.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/mutation-ledger.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/transaction-manager.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/document-helpers.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/history.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/causal-edges.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/incremental-index.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/lineage-state.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/reconsolidation.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/pipeline/stage4-filter.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/schema-downgrade.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/access-tracker.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/consolidation.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/post-insert-metadata.ts
.opencode/skills/system-spec-kit/mcp_server/lib/storage/checkpoints.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/pipeline/orchestrator.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/pipeline/stage2b-enrichment.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/pipeline/stage2-fusion.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/pipeline/types.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/pipeline/ranking-contract.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/pipeline/stage1-candidate-gen.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/pipeline/stage3-rerank.ts
.opencode/skills/system-spec-kit/mcp_server/lib/search/pipeline/index.ts

exec
/bin/zsh -lc 'rg -n "memory_context" .opencode/skills/system-spec-kit/mcp_server' in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
.opencode/skills/system-spec-kit/mcp_server/INSTALL_GUIDE.md:430:- `memory_context` (unified context retrieval)
.opencode/skills/system-spec-kit/mcp_server/INSTALL_GUIDE.md:622:### memory_context: Unified Context Retrieval
.opencode/skills/system-spec-kit/mcp_server/INSTALL_GUIDE.md:624:`memory_context()` is the primary entry point for context loading. It detects task intent and routes to the optimal retrieval strategy automatically.
.opencode/skills/system-spec-kit/mcp_server/INSTALL_GUIDE.md:721:- `ContextEnvelope`: Wraps all `memory_context()` responses with metadata (mode used, memories returned, intent detected)
.opencode/skills/system-spec-kit/mcp_server/INSTALL_GUIDE.md:784:1. AI calls `memory_context({ input: "add user profiles", mode: "auto" })`
.opencode/skills/system-spec-kit/mcp_server/INSTALL_GUIDE.md:1147:MCP TOOLS: memory_context, memory_search, memory_match_triggers,
.opencode/skills/system-spec-kit/mcp_server/INSTALL_GUIDE.md:1163:| v1.7.x | 2026-02-20 | Cross-encoder reranking enabled by default. Co-activation score boost fix. Query expansion on deep mode. Evidence gap warnings. MMR reranking with intent-mapped lambda. Phase system support (recursive validation, phase detection scoring). Feature flag updates. `memory_context` tokenUsage parameter. 28-tool surface area. |
.opencode/skills/system-spec-kit/mcp_server/README.md:9:  - "memory_context"
.opencode/skills/system-spec-kit/mcp_server/README.md:218:  "tool": "memory_context",
.opencode/skills/system-spec-kit/mcp_server/README.md:566:**Query routing:** Structural queries (callers, imports, dependencies) go to `code_graph_query`. Semantic and concept queries go to CocoIndex (`mcp__cocoindex_code__search`). Session and memory queries go to `memory_context`.
.opencode/skills/system-spec-kit/mcp_server/README.md:612:**Start here for most tasks**: `memory_context` (L1) automatically figures out what you need. Use the lower-level tools when you want precise control.
.opencode/skills/system-spec-kit/mcp_server/README.md:618:##### `memory_context`
.opencode/skills/system-spec-kit/mcp_server/README.md:641:  "tool": "memory_context",
.opencode/skills/system-spec-kit/mcp_server/README.md:1352:  "tool": "memory_context",
.opencode/skills/system-spec-kit/mcp_server/README.md:1526:| Find a past decision | `memory_context` | Set `intent: "find_decision"` |
.opencode/skills/system-spec-kit/mcp_server/README.md:1544:**What you see**: Irrelevant or low-scoring results from `memory_search` or `memory_context`.
.opencode/skills/system-spec-kit/mcp_server/README.md:1698:Start with `memory_context` for all retrieval tasks. It handles intent detection and routing automatically. Use `memory_search` when you want explicit control over channels. Use `memory_match_triggers` when processing a raw prompt at the start of each turn. Use L4-L7 tools only for mutation, analysis or maintenance.
.opencode/skills/system-spec-kit/mcp_server/context-server.ts:801:    'Key tools: memory_context, memory_search, memory_save, memory_index_scan, memory_stats.',
.opencode/skills/system-spec-kit/mcp_server/context-server.ts:818:        snap.sessionQuality === 'critical' ? 'call memory_context(resume)' : 'ready';
.opencode/skills/system-spec-kit/mcp_server/context-server.ts:943:    if (name === 'memory_context' && args.mode === 'resume') {
.opencode/skills/system-spec-kit/mcp_server/context-server.ts:973:      name === 'memory_context' && args.mode === 'resume';
.opencode/skills/system-spec-kit/mcp_server/context-server.ts:1028:    if (name !== 'memory_search' && name !== 'memory_context' && name !== 'memory_quick_search' && name !== 'session_health') {
.opencode/skills/system-spec-kit/mcp_server/context-server.ts:1041:    if ((name === 'memory_search' || name === 'memory_context') && result && !result.isError && result.content?.[0]?.text) {
.opencode/skills/system-spec-kit/mcp_server/ENV_REFERENCE.md:236:| `SPECKIT_PRESSURE_POLICY` | `true` | boolean | Token-pressure policy for memory_context responses. Graduated ON. | `lib/search/search-flags.ts` |
.opencode/skills/system-spec-kit/mcp_server/ENV_REFERENCE.md:237:| `SPECKIT_AUTO_RESUME` | `true` | boolean | Automatic session resume context injection for memory_context. Graduated ON. | `lib/search/search-flags.ts` |
.opencode/skills/system-spec-kit/mcp_server/tool-schemas.ts:47:  name: 'memory_context',
.opencode/skills/system-spec-kit/mcp_server/tool-schemas.ts:49:  inputSchema: { type: 'object', additionalProperties: false, properties: { input: { type: 'string', minLength: 1, description: 'The query, prompt, or context description (required)' }, mode: { type: 'string', enum: ['auto', 'quick', 'deep', 'focused', 'resume'], default: 'auto', description: 'Context retrieval mode: auto (detect intent), quick (fast triggers), deep (comprehensive search), focused (intent-optimized), resume (session recovery)' }, intent: { type: 'string', enum: ['add_feature', 'fix_bug', 'refactor', 'security_audit', 'understand', 'find_spec', 'find_decision'], description: 'Explicit task intent. If not provided and mode=auto, intent is auto-detected from input.' }, specFolder: { type: 'string', description: 'Limit context to specific spec folder' }, tenantId: { type: 'string', description: 'Tenant boundary for governed retrieval when memory_context routes to memory_search.' }, userId: { type: 'string', description: 'User boundary for governed retrieval when memory_context routes to memory_search.' }, agentId: { type: 'string', description: 'Agent boundary for governed retrieval when memory_context routes to memory_search.' }, limit: { type: 'number', minimum: 1, maximum: 100, description: 'Maximum results (mode-specific defaults apply)' }, sessionId: { type: 'string', description: 'Optional server-issued session identifier for working-memory continuity. When provided, it must match an existing server-managed session or the call is rejected. Omit it to let the server generate a new session for this request.' }, enableDedup: { type: 'boolean', default: true, description: 'Enable session deduplication' }, includeContent: { type: 'boolean', default: false, description: 'Include full file content in results' }, includeTrace: { type: 'boolean', default: false, description: 'Include provenance-rich trace data (scores, source, trace) in results when underlying memory_search is called' }, tokenUsage: { type: 'number', minimum: 0.0, maximum: 1.0, description: "Optional caller token usage ratio (0.0-1.0)" }, anchors: { type: 'array', items: { type: 'string' }, description: 'Filter content to specific anchors (e.g., ["state", "next-steps"] for resume mode)' }, profile: { type: 'string', enum: ['quick', 'research', 'resume', 'debug'], description: 'Optional response profile formatter. Returns a reduced or mode-aware response shape when profile formatting is enabled.' } }, required: ['input'] },
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-triggers.ts:224:          hint: 'Omit session_id to start a new server-generated session, or reuse the effectiveSessionId returned by memory_context.',
.opencode/skills/system-spec-kit/mcp_server/schemas/tool-input-schemas.ts:586:  memory_context: memoryContextSchema as unknown as ToolInputSchema,
.opencode/skills/system-spec-kit/mcp_server/schemas/tool-input-schemas.ts:646:  memory_context: ['input', 'mode', 'intent', 'specFolder', 'tenantId', 'userId', 'agentId', 'limit', 'sessionId', 'enableDedup', 'includeContent', 'includeTrace', 'tokenUsage', 'anchors', 'profile'],
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:62:      content: 'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:73:      content: 'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:85:      content: 'Context was compacted, but the cached compact brief was quarantined by semantic validation. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:103:      content: 'Context was compacted and auto-recovered from the cached compact brief. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:248:        '- `memory_context({ input, mode })` — unified context retrieval',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:306:      content: `Last active spec folder: ${state.lastSpecFolder}\nCall \`memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })\` for full context.`,
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:311:      content: 'Call `memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })` to restore session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:323:      content: 'Session cleared. Spec Kit Memory is active. Use `memory_context` or `memory_match_triggers` to load relevant context.',
.opencode/skills/system-spec-kit/mcp_server/hooks/memory-surface.ts:86:  'memory_context',
.opencode/skills/system-spec-kit/mcp_server/hooks/memory-surface.ts:460:    recommendedCalls.push('memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })');
.opencode/skills/system-spec-kit/mcp_server/lib/session/context-metrics.ts:224:  //   recovery (0.20)      — A memory_context({ mode: "resume" }) call is the most
.opencode/skills/system-spec-kit/mcp_server/hooks/README.md:104:- `MEMORY_AWARE_TOOLS` currently includes `memory_context`, `memory_search`, `memory_match_triggers`, `memory_list`, `memory_save`, and `memory_index_scan`.
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/README.md:54:Hooks are transport reliability, not separate business logic. They call the same retrieval primitives (`memory_match_triggers`, `memory_context`) that other runtimes call explicitly.
.opencode/skills/system-spec-kit/mcp_server/hooks/codex/session-start.ts:95:        content: `Last active spec folder: ${state.lastSpecFolder}\nCall \`memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })\` for full context.`,
.opencode/skills/system-spec-kit/mcp_server/hooks/codex/session-start.ts:101:    content: 'Call `memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })` to restore session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/codex/session-start.ts:108:    content: 'Session cleared. Spec Kit Memory is active. Use `memory_context` or `memory_match_triggers` to load relevant context.',
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/custom-instructions.ts:35:const STARTUP_FALLBACK = 'Startup context unavailable. Call `session_bootstrap()` or `memory_context({ mode: "resume", profile: "resume" })` if more context is needed.';
.opencode/skills/system-spec-kit/mcp_server/handlers/index.ts:311:export const handle_memory_context = lazyFunction(getMemoryContextModule, 'handle_memory_context');
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:126:      'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:136:      'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:147:      'Context was compacted, but the cached compact brief was quarantined by semantic validation. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:164:    'Context was compacted and auto-recovered from the cached compact brief. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:63:// Feature catalog: Unified context retrieval (memory_context)
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1036:    tool: 'memory_context_resume',
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1353:/** Handle memory_context tool — L1 orchestration layer that routes to optimal retrieval strategy.
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1367:      tool: 'memory_context',
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1392:      tool: 'memory_context',
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1501:      tool: 'memory_context',
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1520:  const layerInfo: LayerInfo | null = layerDefs.getLayerInfo('memory_context');
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1588:  // Phase C: Intent-to-profile auto-routing for memory_context.
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1645:      tool: 'memory_context',
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1663:      tool: 'memory_context',
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1760:    tool: 'memory_context',
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1874:      tool: 'memory_context',
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1875:      error: 'memory_context failed due to an internal error',
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1897:const handle_memory_context = handleMemoryContext;
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1900:  handle_memory_context,
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:66:      content: 'Context was compressed. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:77:      content: 'Context was compressed. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:89:      content: 'Context was compressed, but the cached compact brief was quarantined by semantic validation. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:106:      content: 'Context was compressed and auto-recovered. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:188:        '- `memory_context({ input, mode })` - unified context retrieval',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:239:      content: `Last active spec folder: ${state.lastSpecFolder}\nCall \`memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })\` for full context.`,
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:245:    content: 'Call `memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })` to restore session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:253:    content: 'Session cleared. Spec Kit Memory is active. Use `memory_context` or `memory_match_triggers` to load relevant context.',
.opencode/skills/system-spec-kit/mcp_server/handlers/session-health.ts:184:    hints.push('No tool calls in >60 min. Consider calling `memory_context` to refresh session state.');
.opencode/skills/system-spec-kit/mcp_server/lib/extraction/extraction-adapter.ts:42:    toolPattern: /^(read|memory_context|memory_search|memory_list)$/i,
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/compact-inject.ts:85:    'Context was compressed and auto-recovered. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
.opencode/skills/system-spec-kit/mcp_server/lib/search/pipeline/stage1-candidate-gen.ts:1051:  // Including it here caused all candidates to be filtered out when memory_context
.opencode/skills/system-spec-kit/mcp_server/tests/mcp-tool-dispatch.vitest.ts:6:  { tool: 'memory_context', handler: 'handleMemoryContext', layer: 'L1' },
.opencode/skills/system-spec-kit/mcp_server/tests/mcp-tool-dispatch.vitest.ts:56:  { camel: 'handleMemoryContext', snake: 'handle_memory_context' },
.opencode/skills/system-spec-kit/mcp_server/lib/errors/core.ts:55:  memory_context: ERROR_CODES.SEARCH_FAILED,
.opencode/skills/system-spec-kit/mcp_server/code_graph/lib/query-intent-classifier.ts:8:// Phase 020: Integrated into memory_context handler for query-intent
.opencode/skills/system-spec-kit/mcp_server/lib/cache/tool-cache.ts:314:    'memory_context',
.opencode/skills/system-spec-kit/mcp_server/lib/response/profile-formatters.ts:230:    followUps.push(`Use memory_context with specFolder "${uniqueFolders[0]}" for full context`);
.opencode/skills/system-spec-kit/mcp_server/lib/eval/data/ground-truth.json:30:      "expectedResultDescription": "Should surface memories about adaptive-fusion.ts (7 intent profiles), intent-classifier.ts, and memory_context intent routing. Cross-document because the behavior spans multiple modules.",
.opencode/skills/system-spec-kit/mcp_server/lib/eval/data/ground-truth.json:85:      "query": "memory_context returns wrong results when token pressure is high",
.opencode/skills/system-spec-kit/mcp_server/lib/eval/data/ground-truth.json:251:      "notes": "From T007b Pattern 3: feature description passed to memory_context before implementation."
.opencode/skills/system-spec-kit/mcp_server/lib/eval/data/ground-truth.json:425:      "query": "what is the difference between memory_context and memory_search for context retrieval",
.opencode/skills/system-spec-kit/mcp_server/lib/eval/data/ground-truth.json:430:      "expectedResultDescription": "Should surface both memory_context (L1 unified entry) and memory_search (L2 core) tool schemas and any documentation comparing their use cases.",
.opencode/skills/system-spec-kit/mcp_server/lib/eval/data/ground-truth.json:725:      "query": "when should I use memory_search versus memory_context",
.opencode/skills/system-spec-kit/mcp_server/lib/search/search-flags.ts:59: * Token-pressure policy for memory_context.
.opencode/skills/system-spec-kit/mcp_server/lib/search/search-flags.ts:67: * Automatic session resume context injection for memory_context.
.opencode/skills/system-spec-kit/mcp_server/tools/context-tools.ts:4:// Dispatch for L1 Orchestration tool: memory_context (T303).
.opencode/skills/system-spec-kit/mcp_server/tools/context-tools.ts:11:export const TOOL_NAMES = new Set(['memory_context']);
.opencode/skills/system-spec-kit/mcp_server/tools/context-tools.ts:16:    case 'memory_context': return handleMemoryContext(parseArgs<ContextArgs>(validateToolArgs('memory_context', args)));
.opencode/skills/system-spec-kit/mcp_server/lib/eval/warm-start-variant-runner.ts:48:  liveBaselineResolution: 'code_graph_query' | 'memory_context' | 'memory_context_then_grep';
.opencode/skills/system-spec-kit/mcp_server/lib/eval/warm-start-variant-runner.ts:143:    return 'memory_context_then_grep';
.opencode/skills/system-spec-kit/mcp_server/lib/eval/warm-start-variant-runner.ts:146:  return 'memory_context';
.opencode/skills/system-spec-kit/mcp_server/lib/eval/warm-start-variant-runner.ts:162:    if (resolution === 'memory_context_then_grep') {
.opencode/skills/system-spec-kit/mcp_server/tools/README.md:28:- `context-tools.ts` - dispatch for `memory_context`.
.opencode/skills/system-spec-kit/mcp_server/tests/extraction-adapter.vitest.ts:134:    expect(matchRule('memory_context', 'spec.md metadata')).not.toBeNull();
.opencode/skills/system-spec-kit/mcp_server/tests/tool-input-schema.vitest.ts:96:      validateToolInputSchema('memory_context', {}, TOOL_DEFINITIONS);
.opencode/skills/system-spec-kit/mcp_server/tests/tool-input-schema.vitest.ts:132:      validateToolInputSchema('memory_context', { input: 'resume', mode: 'invalid-mode' }, TOOL_DEFINITIONS);
.opencode/skills/system-spec-kit/mcp_server/tests/tool-input-schema.vitest.ts:381:  it('public and runtime schemas accept governed scope fields for memory_context', () => {
.opencode/skills/system-spec-kit/mcp_server/tests/tool-input-schema.vitest.ts:390:      validateToolInputSchema('memory_context', args, TOOL_DEFINITIONS);
.opencode/skills/system-spec-kit/mcp_server/tests/tool-input-schema.vitest.ts:392:    expect(validateToolArgs('memory_context', args)).toEqual(args);
.opencode/skills/system-spec-kit/mcp_server/tests/tool-input-schema.vitest.ts:395:  it('public and runtime schemas accept response profiles for memory_context', () => {
.opencode/skills/system-spec-kit/mcp_server/tests/tool-input-schema.vitest.ts:402:      validateToolInputSchema('memory_context', args, TOOL_DEFINITIONS);
.opencode/skills/system-spec-kit/mcp_server/tests/tool-input-schema.vitest.ts:404:    expect(validateToolArgs('memory_context', args)).toEqual(args);
.opencode/skills/system-spec-kit/mcp_server/lib/architecture/layer-definitions.ts:50:    tools: ['memory_context', 'session_resume', 'session_bootstrap']
.opencode/skills/system-spec-kit/mcp_server/lib/enrichment/passive-enrichment.ts:129:      return ['[session] Context quality is CRITICAL. Consider running `memory_context({ mode: "resume" })` or `session_health` to diagnose.'];
.opencode/skills/system-spec-kit/mcp_server/tests/context-server-error-envelope.vitest.ts:23:    const errorResponse = buildErrorResponse('memory_context', err, {});
.opencode/skills/system-spec-kit/mcp_server/tests/graph-first-routing-nudge.vitest.ts:89:describe('memory_context advisory metadata', () => {
.opencode/skills/system-spec-kit/mcp_server/tests/intent-paraphrase-stability.vitest.ts:173:      'explain memory_context routing',
.opencode/skills/system-spec-kit/mcp_server/tests/intent-paraphrase-stability.vitest.ts:174:      'Please describe how memory_context routing works.',
.opencode/skills/system-spec-kit/mcp_server/tests/intent-paraphrase-stability.vitest.ts:175:      'What is the memory_context routing flow?',
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context-eval-channels.vitest.ts:1:// TEST: memory_context per-channel eval logging (T056)
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context-eval-channels.vitest.ts:88:describe('T056: memory_context emits per-strategy channel eval rows', () => {
.opencode/skills/system-spec-kit/mcp_server/tests/token-budget-enforcement.vitest.ts:19:        memory_context: 3500,
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:161:      'memory_context',
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:296:      'memory_context', 'memory_search', 'memory_quick_search', 'memory_match_triggers',
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:1472:          if (name !== 'memory_search' && name !== 'memory_context' && name !== 'memory_quick_search' && name !== 'session_health') {
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:1568:    it('T000g: memory_context resume mode invokes TM-05 compaction hook at runtime', async () => {
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:1569:      expect(sourceCode).toContain("name === 'memory_context' && args.mode === 'resume'")
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:1580:      const memoryAwareTools = new Set<string>(['memory_context'])
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:1593:            autoSurfacedContext = name === 'memory_context' && args.mode === 'resume'
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:1614:      const response = await simulateCallToolHandler('memory_context', {
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:1626:    it('T000h: memory_context non-resume mode keeps SK-004 memory-aware path', async () => {
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:1627:      expect(sourceCode).toContain("name === 'memory_context' && args.mode === 'resume'")
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:1636:      const memoryAwareTools = new Set<string>(['memory_context'])
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:1649:            autoSurfacedContext = name === 'memory_context' && args.mode === 'resume'
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:1668:      const response = await simulateCallToolHandler('memory_context', {
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:1868:        'Key tools: memory_context, memory_search, memory_save, memory_index_scan, memory_stats.',
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:1895:          'Key tools: memory_context, memory_search, memory_save, memory_index_scan, memory_stats.',
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:2140:    it('T28: L1 budget = 3500 (memory_context)', async () => {
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:2145:      expect(layerDefs!.getTokenBudget!('memory_context')).toBe(3500)
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:2229:    const expectedAwareTools = ['memory_context', 'memory_search', 'memory_match_triggers', 'memory_list', 'memory_save', 'memory_index_scan']
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:2610:      'memory_context': '[L1:Orchestration]',
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:2657:    it('T000e: memory_context supports optional tokenUsage (0.0-1.0)', () => {
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:2658:      expect(toolSchemasCode).toMatch(/name:\s*'memory_context'[\s\S]*?tokenUsage:\s*\{\s*type:\s*'number'/)
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:2840:        'Key tools: memory_context, memory_search, memory_save, memory_index_scan, memory_stats.',
.opencode/skills/system-spec-kit/mcp_server/tests/context-server.vitest.ts:2866:      expect(result).toContain('memory_context')
.opencode/skills/system-spec-kit/mcp_server/tests/layer-definitions.vitest.ts:122:        memory_context: 'L1',
.opencode/skills/system-spec-kit/mcp_server/tests/layer-definitions.vitest.ts:206:        { tool: 'memory_context', expected: '[L1:Orchestration]' },
.opencode/skills/system-spec-kit/mcp_server/tests/layer-definitions.vitest.ts:233:      const result = mod.enhanceDescription('memory_context', 'Some description text');
.opencode/skills/system-spec-kit/mcp_server/tests/layer-definitions.vitest.ts:254:      expect(mod.enhanceDescription('memory_context', '')).toBe('[L1:Orchestration] ');
.opencode/skills/system-spec-kit/mcp_server/tests/layer-definitions.vitest.ts:264:        { tool: 'memory_context', expected: 3500 },
.opencode/skills/system-spec-kit/mcp_server/tests/layer-definitions.vitest.ts:282:      expect(typeof mod.getTokenBudget('memory_context')).toBe('number');
.opencode/skills/system-spec-kit/mcp_server/tests/layer-definitions.vitest.ts:292:      const info = expectLayerInfo(mod.getLayerInfo('memory_context'));
.opencode/skills/system-spec-kit/mcp_server/tests/layer-definitions.vitest.ts:299:      expect(info.tools).toContain('memory_context');
.opencode/skills/system-spec-kit/mcp_server/tests/layer-definitions.vitest.ts:303:      const info1 = mod.getLayerInfo('memory_context');
.opencode/skills/system-spec-kit/mcp_server/tests/layer-definitions.vitest.ts:304:      const info2 = mod.getLayerInfo('memory_context');
.opencode/skills/system-spec-kit/mcp_server/tests/layer-definitions.vitest.ts:442:      const toolSamples = ['memory_context', 'memory_search', 'memory_list',
.opencode/skills/system-spec-kit/mcp_server/tests/dual-scope-hooks.vitest.ts:127:  it('returns null for memory_context (prevents recursive surfacing)', async () => {
.opencode/skills/system-spec-kit/mcp_server/tests/dual-scope-hooks.vitest.ts:128:    const result = await autoSurfaceAtToolDispatch('memory_context', { input: 'some context' });
.opencode/skills/system-spec-kit/mcp_server/tests/session-bootstrap-gate-d.vitest.ts:89:    expect(messagingSurface).not.toContain('memory_context({ input: "resume previous work"');
.opencode/skills/system-spec-kit/mcp_server/tests/mcp-input-validation.vitest.ts:30:    tool: 'memory_context',
.opencode/skills/system-spec-kit/mcp_server/tests/mcp-input-validation.vitest.ts:176:  { tool: 'memory_context', handler: 'handleMemoryContext' },
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context.vitest.ts:29:  handle_memory_context,
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context.vitest.ts:229:   T021-T030: handle_memory_context MAIN HANDLER TESTS
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context.vitest.ts:233:  it('T021: handle_memory_context is a function', () => {
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context.vitest.ts:280:  it('T029: handleMemoryContext is alias for handle_memory_context', () => {
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context.vitest.ts:281:    expect(handleMemoryContext).toBe(handle_memory_context);
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context.vitest.ts:848:  it('T101: handle_memory_context is exported', () => {
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context.vitest.ts:869:  it('T105: handleMemoryContext is same as handle_memory_context', () => {
.opencode/skills/system-spec-kit/mcp_server/tests/memory-context.vitest.ts:870:    expect(handleMemoryContext).toBe(handle_memory_context);

codex
The raw search has a lot of schema/docs/test noise. I’m narrowing to executable TypeScript under `mcp_server`, then mapping each occurrence to the containing function rather than listing every string literal.
exec
/bin/zsh -lc "nl -ba .opencode/skills/system-spec-kit/mcp_server/tools/context-tools.ts | sed -n '1,80p'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
exec
/bin/zsh -lc "nl -ba .opencode/skills/system-spec-kit/mcp_server/context-server.ts | sed -n '760,1060p'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
     1	// ───────────────────────────────────────────────────────────────
     2	// MODULE: Context Tools
     3	// ───────────────────────────────────────────────────────────────
     4	// Dispatch for L1 Orchestration tool: memory_context (T303).
     5	import { handleMemoryContext } from '../handlers/index.js';
     6	import { validateToolArgs } from '../schemas/tool-input-schemas.js';
     7	import { parseArgs } from './types.js';
     8	import type { MCPResponse, ContextArgs } from './types.js';
     9	
    10	/** Tool names handled by this module */
    11	export const TOOL_NAMES = new Set(['memory_context']);
    12	
    13	/** Dispatch a tool call. Returns null if tool name not handled. */
    14	export async function handleTool(name: string, args: Record<string, unknown>): Promise<MCPResponse | null> {
    15	  switch (name) {
    16	    case 'memory_context': return handleMemoryContext(parseArgs<ContextArgs>(validateToolArgs('memory_context', args)));
    17	    default: return null;
    18	  }
    19	}

 succeeded in 0ms:
   760	    const topFolders = Array.isArray(data.topFolders) ? data.topFolders : [];
   761	    const success = typeof byStatus.success === 'number' ? byStatus.success : 0;
   762	    const pending = typeof byStatus.pending === 'number' ? byStatus.pending : 0;
   763	    const failed = typeof byStatus.failed === 'number' ? byStatus.failed : 0;
   764	    const retry = typeof byStatus.retry === 'number' ? byStatus.retry : 0;
   765	    const totalSpecFolders = typeof data.totalSpecFolders === 'number'
   766	      ? data.totalSpecFolders
   767	      : topFolders.length;
   768	
   769	    return {
   770	      totalMemories: typeof data.totalMemories === 'number' ? data.totalMemories : 0,
   771	      specFolderCount: totalSpecFolders,
   772	      activeCount: success,
   773	      staleCount: pending + failed + retry,
   774	    };
   775	  } catch (_error: unknown) {
   776	    return { totalMemories: 0, specFolderCount: 0, activeCount: 0, staleCount: 0 };
   777	  }
   778	}
   779	
   780	// (CHK-076): Instructions are computed once at startup and NOT refreshed during the session.
   781	// This is by design — instruction updates require MCP protocol re-negotiation which most clients
   782	// Don't support. If index changes significantly, restart the server to refresh instructions.
   783	async function buildServerInstructions(): Promise<string> {
   784	  if (!isDynamicInitEnabled()) {
   785	    return '';
   786	  }
   787	
   788	  const stats = await getMemoryStats();
   789	  const channels: string[] = ['vector', 'fts5'];
   790	  if (bm25Index.isBm25Enabled()) channels.push('bm25');
   791	  if (isGraphUnifiedEnabled()) channels.push('graph');
   792	  if (isDegreeBoostEnabled()) channels.push('degree');
   793	  const staleWarning = stats.staleCount > 10
   794	    ? ` Warning: ${stats.staleCount} stale memories detected. Consider running memory_index_scan.`
   795	    : '';
   796	
   797	  const lines = [
   798	    `Spec Kit Memory MCP has ${stats.totalMemories} indexed memories across ${stats.specFolderCount} spec folders.`,
   799	    `Active memories: ${stats.activeCount}. Stale memories: ${stats.staleCount}.`,
   800	    `Search channels: ${channels.join(', ')}.`,
   801	    'Key tools: memory_context, memory_search, memory_save, memory_index_scan, memory_stats.',
   802	    'Graph retrieval: memory_search supports retrievalLevel (local/global/auto) for entity-level or community-level search. Graph provenance visible via graphEvidence in results.',
   803	    staleWarning.trim(),
   804	  ];
   805	
   806	  // Phase 024 / Item 4 + M8 / T-CGQ-12: Session recovery digest from
   807	  // session-snapshot. 'empty' recommends code_graph_scan (graph absent);
   808	  // 'error' recommends memory_health because structural context is
   809	  // unavailable, not merely outdated.
   810	  try {
   811	    const { getSessionSnapshot } = await import('./lib/session/session-snapshot.js');
   812	    const snap = getSessionSnapshot();
   813	    const hasData = snap.specFolder || snap.graphFreshness !== 'error' || snap.sessionQuality !== 'unknown';
   814	    if (hasData) {
   815	      const recommended = !snap.primed ? 'call session_bootstrap()' :
   816	        snap.graphFreshness === 'empty' ? 'run code_graph_scan' :
   817	        snap.graphFreshness === 'error' ? 'call memory_health (structural context unavailable)' :
   818	        snap.sessionQuality === 'critical' ? 'call memory_context(resume)' : 'ready';
   819	      lines.push('');
   820	      lines.push('## Session Recovery');
   821	      lines.push(`- Last spec folder: ${snap.specFolder || 'none'}`);
   822	      lines.push(`- Code graph: ${snap.graphFreshness}`);
   823	      lines.push(`- Session quality: ${snap.sessionQuality}`);
   824	      lines.push(`- Recommended: ${recommended}`);
   825	    }
   826	  } catch { /* session-snapshot not available — skip digest */ }
   827	
   828	  // Phase 027 + M8 / T-CGQ-12 (R27-002): Structural bootstrap guidance for
   829	  // non-hook runtimes. Readiness vocabulary is aligned across bootstrap,
   830	  // resume, health, and code_graph_query (ready | stale | absent |
   831	  // unavailable). code_graph_query is only recommended when structural
   832	  // context is actually reachable; 'absent' and 'unavailable' route to
   833	  // repair/recovery, not query.
   834	  lines.push('');
   835	  lines.push('## Structural Bootstrap (Phase 027)');
   836	  lines.push('Non-hook runtimes receive automatic structural context via session_bootstrap, session_resume, and auto-prime.');
   837	  lines.push('- If structural context shows "ready": code_graph_query is available for structural lookups');
   838	  lines.push('- If "stale": code_graph_query still works, but a session_bootstrap refresh is recommended');
   839	  lines.push('- If "absent" (empty/missing graph): run code_graph_scan first, then session_bootstrap');
   840	  lines.push('- If "unavailable" (DB unreachable / readiness probe failed): call memory_health for repair guidance instead of code_graph_query');
   841	  lines.push('- Recovery priority: session_bootstrap → session_resume → code_graph_scan');
   842	
   843	  // Phase 024 + M8 / T-CGQ-12: Tool routing decision tree.
   844	  // code_graph_query is only surfaced when graph freshness is 'fresh' or
   845	  // 'stale' (queryable). 'empty' → recommend code_graph_scan; 'error' →
   846	  // recommend memory_health because the database probe failed.
   847	  try {
   848	    const { getSessionSnapshot: getSnap } = await import('./lib/session/session-snapshot.js');
   849	    const snap = getSnap();
   850	    const routingRules: string[] = [];
   851	    if (snap.cocoIndexAvailable) {
   852	      routingRules.push('Semantic/concept code search → mcp__cocoindex_code__search');
   853	    }
   854	    if (snap.graphFreshness === 'fresh' || snap.graphFreshness === 'stale') {
   855	      routingRules.push('Structural queries (callers, imports, deps) → code_graph_query');
   856	    } else if (snap.graphFreshness === 'empty') {
   857	      routingRules.push('Structural queries → unavailable: run code_graph_scan first (graph is absent)');
   858	    } else if (snap.graphFreshness === 'error') {
   859	      routingRules.push('Structural queries → unavailable: call memory_health to diagnose (graph readiness unavailable)');
   860	    }
   861	    routingRules.push('Exact text/regex matching → Grep tool');
   862	    if (routingRules.length > 0) {
   863	      lines.push('');
   864	      lines.push('## Tool Routing');
   865	      for (const rule of routingRules) {
   866	        lines.push(`- ${rule}`);
   867	      }
   868	    }
   869	  } catch { /* tool routing snapshot unavailable — skip */ }
   870	
   871	  return lines.filter(Boolean).join(' ');
   872	}
   873	
   874	/** Register a callback to be invoked asynchronously after each tool call completes. */
   875	export function registerAfterToolCallback(fn: AfterToolCallback): void {
   876	  afterToolCallbacks.push(fn);
   877	}
   878	
   879	async function invalidateReinitializedDbCaches(): Promise<void> {
   880	  const invalidatedEntries = toolCache.clear();
   881	
   882	  try {
   883	    const triggerMatcher = await import('./lib/parsing/trigger-matcher.js');
   884	    if (typeof triggerMatcher.clearCache === 'function') {
   885	      triggerMatcher.clearCache();
   886	    }
   887	  } catch (error: unknown) {
   888	    const message = error instanceof Error ? error.message : String(error);
   889	    console.error(`[context-server] Failed to clear trigger cache after DB reinit: ${message}`);
   890	  }
   891	
   892	  if (invalidatedEntries > 0) {
   893	    console.error(`[context-server] Cleared ${invalidatedEntries} tool-cache entries after DB reinitialization`);
   894	  }
   895	}
   896	
   897	/* ───────────────────────────────────────────────────────────────
   898	   3. SERVER INITIALIZATION
   899	──────────────────────────────────────────────────────────────── */
   900	
   901	const server = new Server(
   902	  { name: 'context-server', version: '1.7.2' },
   903	  { capabilities: { tools: {} } }
   904	);
   905	const serverWithInstructions = server as unknown as { setInstructions?: (instructions: string) => void };
   906	
   907	/* ───────────────────────────────────────────────────────────────
   908	   4. TOOL DEFINITIONS (T303: from tool-schemas.ts)
   909	──────────────────────────────────────────────────────────────── */
   910	
   911	server.setRequestHandler(ListToolsRequestSchema, async () => ({
   912	  tools: TOOL_DEFINITIONS
   913	}));
   914	
   915	/* ───────────────────────────────────────────────────────────────
   916	   5. TOOL DISPATCH (T303: routed through tools/*.ts)
   917	──────────────────────────────────────────────────────────────── */
   918	
   919	// eslint-disable-next-line @typescript-eslint/no-explicit-any
   920	server.setRequestHandler(CallToolRequestSchema, async (request, _extra: unknown): Promise<any> => {
   921	  const requestParams = request.params as { name: string; arguments?: Record<string, unknown> };
   922	  const { name } = requestParams;
   923	  const args: Record<string, unknown> = requestParams.arguments ?? {};
   924	  const callId = resolveToolCallId(request as { id?: unknown });
   925	  const sessionTrackingId = resolveSessionTrackingId(args, _extra);
   926	  const callerContext = buildCallerContext(_extra);
   927	  if (sessionTrackingId) lastKnownSessionId = sessionTrackingId;
   928	
   929	  try {
   930	    // SEC-003: Validate input lengths before processing (CWE-400 mitigation)
   931	    validateInputLengths(args);
   932	    // T304: Zod validation is applied per-tool inside each dispatch module
   933	    // (tools/*.ts) to avoid double-validation overhead at the server layer.
   934	
   935	    // T018: Track last tool call timestamp for all tools except session_health.
   936	    if (name !== 'session_health') {
   937	      recordToolCall(sessionTrackingId);
   938	
   939	      // Phase 023: Record metric event for context quality tracking
   940	      recordMetricEvent({ kind: 'tool_call', toolName: name });
   941	    }
   942	    // Classify specific tool calls for finer-grained metrics
   943	    if (name === 'memory_context' && args.mode === 'resume') {
   944	      recordMetricEvent({ kind: 'memory_recovery' });
   945	    }
   946	    if (name.startsWith('code_graph_')) {
   947	      recordMetricEvent({ kind: 'code_graph_query' });
   948	    }
   949	    if (typeof args.specFolder === 'string' && args.specFolder) {
   950	      recordMetricEvent({ kind: 'spec_folder_change', specFolder: args.specFolder as string });
   951	    }
   952	
   953	    const dbReinitialized = await checkDatabaseUpdated();
   954	    if (dbReinitialized) {
   955	      await invalidateReinitializedDbCaches();
   956	    }
   957	
   958	    let sessionPrimeContext: AutoSurfaceResult | null = null;
   959	    try {
   960	      sessionPrimeContext = await primeSessionIfNeeded(
   961	        name,
   962	        args,
   963	        sessionTrackingId,
   964	      );
   965	    } catch (primeErr: unknown) {
   966	      const msg = primeErr instanceof Error ? primeErr.message : String(primeErr);
   967	      console.error(`[context-server] Session priming failed (non-fatal): ${msg}`);
   968	    }
   969	
   970	    // SK-004/TM-05: Auto-surface memories before dispatch (after validation)
   971	    let autoSurfacedContext: AutoSurfaceResult | null = null;
   972	    const isCompactionLifecycleCall =
   973	      name === 'memory_context' && args.mode === 'resume';
   974	
   975	    const autoSurfaceStart = Date.now();
   976	    if (MEMORY_AWARE_TOOLS.has(name)) {
   977	      const contextHint: string | null = extractContextHint(args);
   978	      if (contextHint) {
   979	        try {
   980	          if (isCompactionLifecycleCall) {
   981	            autoSurfacedContext = await autoSurfaceAtCompaction(contextHint);
   982	          } else {
   983	            autoSurfacedContext = await autoSurfaceMemories(contextHint);
   984	          }
   985	        } catch (surfaceErr: unknown) {
   986	          const msg = surfaceErr instanceof Error ? surfaceErr.message : String(surfaceErr);
   987	          console.error(`[context-server] Auto-surface failed (non-fatal): ${msg}`);
   988	        }
   989	      }
   990	    } else {
   991	      try {
   992	        autoSurfacedContext = await autoSurfaceAtToolDispatch(name, args);
   993	      } catch (surfaceErr: unknown) {
   994	        const msg = surfaceErr instanceof Error ? surfaceErr.message : String(surfaceErr);
   995	        console.error(`[context-server] Tool-dispatch auto-surface failed (non-fatal): ${msg}`);
   996	      }
   997	    }
   998	    const autoSurfaceLatencyMs = Date.now() - autoSurfaceStart;
   999	    if (autoSurfaceLatencyMs > 250) {
  1000	      console.warn(`[context-server] Auto-surface precheck exceeded p95 target: ${autoSurfaceLatencyMs}ms`);
  1001	    }
  1002	
  1003	    // Ensure database is initialized (safe no-op if already done)
  1004	    // P1-11 FIX: Module-level guard avoids redundant calls on every tool invocation
  1005	    if (!dbInitialized) {
  1006	      vectorIndex.initializeDb();
  1007	      dbInitialized = true;
  1008	    }
  1009	
  1010	    // T303: Dispatch to tool modules
  1011	    const result = await runWithCallerContext(
  1012	      callerContext,
  1013	      async () => dispatchTool(name, args),
  1014	    ) as ToolCallResponse | null;
  1015	    if (!result) {
  1016	      throw new Error(`Unknown tool: ${name}`);
  1017	    }
  1018	
  1019	    let dispatchGraphContext: DispatchGraphContextMeta | null = null;
  1020	    if (!result.isError) {
  1021	      dispatchGraphContext = await resolveDispatchGraphContext(name, args);
  1022	    }
  1023	
  1024	    runAfterToolCallbacks(name, callId, structuredClone(result));
  1025	
  1026	    // REQ-014: Log follow_on_tool_use when a non-search tool is called after a recent search
  1027	    // Shadow-only: no ranking side effects. Fail-safe, never throws.
  1028	    if (name !== 'memory_search' && name !== 'memory_context' && name !== 'memory_quick_search' && name !== 'session_health') {
  1029	      try {
  1030	        const { logFollowOnToolUse } = await import('./lib/feedback/query-flow-tracker.js');
  1031	        const { requireDb } = await import('./utils/index.js');
  1032	        const db = (() => { try { return requireDb(); } catch { return null; } })();
  1033	        const followOnSessionId = sessionTrackingId ?? lastKnownSessionId;
  1034	        if (db && followOnSessionId) {
  1035	          logFollowOnToolUse(db, followOnSessionId);
  1036	        }
  1037	      } catch { /* follow_on_tool_use logging must never break dispatch */ }
  1038	    }
  1039	
  1040	    // Phase 024: Code-search redirect hint for memory tools
  1041	    if ((name === 'memory_search' || name === 'memory_context') && result && !result.isError && result.content?.[0]?.text) {
  1042	      const queryStr = typeof args.query === 'string' ? args.query : typeof args.input === 'string' ? args.input : '';
  1043	      const codeSearchPattern = /\b(find code|implementation of|function that|where is|how does .+ work|class that|method for)\b/i;
  1044	      if (queryStr && codeSearchPattern.test(queryStr)) {
  1045	        try {
  1046	          const envelope = JSON.parse(result.content[0].text) as Record<string, unknown>;
  1047	          if (envelope && typeof envelope === 'object' && !Array.isArray(envelope)) {
  1048	            const existingHints = Array.isArray(envelope.hints) ? envelope.hints as string[] : [];
  1049	            existingHints.push('Tip: For code search queries, consider using mcp__cocoindex_code__search for semantic code search or code_graph_query for structural lookups.');
  1050	            envelope.hints = existingHints;
  1051	            result.content[0].text = JSON.stringify(envelope, null, 2);
  1052	          }
  1053	        } catch {
  1054	          // Response is not JSON envelope — skip hint injection
  1055	        }
  1056	      }
  1057	
  1058	      if (queryStr) {
  1059	        try {
  1060	          const envelope = JSON.parse(result.content[0].text) as Record<string, unknown>;

exec
/bin/zsh -lc "nl -ba .opencode/skills/system-spec-kit/mcp_server/handlers/index.ts | sed -n '280,325p'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
   280	export const handle_checkpoint_list = lazyFunction(getCheckpointsModule, 'handle_checkpoint_list');
   281	export const handle_checkpoint_restore = lazyFunction(getCheckpointsModule, 'handle_checkpoint_restore');
   282	export const handle_checkpoint_delete = lazyFunction(getCheckpointsModule, 'handle_checkpoint_delete');
   283	export const handle_memory_validate = lazyFunction(getCheckpointsModule, 'handle_memory_validate');
   284	
   285	// Session learning handlers
   286	export const handleTaskPreflight = lazyFunction(getSessionLearningModule, 'handleTaskPreflight');
   287	export const handleTaskPostflight = lazyFunction(getSessionLearningModule, 'handleTaskPostflight');
   288	export const handleGetLearningHistory = lazyFunction(getSessionLearningModule, 'handleGetLearningHistory');
   289	export const handle_task_preflight = lazyFunction(getSessionLearningModule, 'handle_task_preflight');
   290	export const handle_task_postflight = lazyFunction(getSessionLearningModule, 'handle_task_postflight');
   291	export const handle_get_learning_history = lazyFunction(getSessionLearningModule, 'handle_get_learning_history');
   292	
   293	// Eval reporting handlers
   294	export const handleEvalRunAblation = lazyFunction(getEvalReportingModule, 'handleEvalRunAblation');
   295	export const handleEvalReportingDashboard = lazyFunction(getEvalReportingModule, 'handleEvalReportingDashboard');
   296	export const handle_eval_run_ablation = lazyFunction(getEvalReportingModule, 'handle_eval_run_ablation');
   297	export const handle_eval_reporting_dashboard = lazyFunction(getEvalReportingModule, 'handle_eval_reporting_dashboard');
   298	
   299	// Causal graph handlers
   300	export const handleMemoryDriftWhy = lazyFunction(getCausalGraphModule, 'handleMemoryDriftWhy');
   301	export const handleMemoryCausalLink = lazyFunction(getCausalGraphModule, 'handleMemoryCausalLink');
   302	export const handleMemoryCausalStats = lazyFunction(getCausalGraphModule, 'handleMemoryCausalStats');
   303	export const handleMemoryCausalUnlink = lazyFunction(getCausalGraphModule, 'handleMemoryCausalUnlink');
   304	export const handle_memory_drift_why = lazyFunction(getCausalGraphModule, 'handle_memory_drift_why');
   305	export const handle_memory_causal_link = lazyFunction(getCausalGraphModule, 'handle_memory_causal_link');
   306	export const handle_memory_causal_stats = lazyFunction(getCausalGraphModule, 'handle_memory_causal_stats');
   307	export const handle_memory_causal_unlink = lazyFunction(getCausalGraphModule, 'handle_memory_causal_unlink');
   308	
   309	// Memory context handler
   310	export const handleMemoryContext = lazyFunction(getMemoryContextModule, 'handleMemoryContext');
   311	export const handle_memory_context = lazyFunction(getMemoryContextModule, 'handle_memory_context');
   312	
   313	// Session health handler
   314	export const handleSessionHealth = lazyFunction(getSessionHealthModule, 'handleSessionHealth');
   315	
   316	// Session resume handler
   317	export const handleSessionResume = lazyFunction(getSessionResumeModule, 'handleSessionResume');
   318	
   319	// Session bootstrap handler
   320	export const handleSessionBootstrap = lazyFunction(getSessionBootstrapModule, 'handleSessionBootstrap');
   321	
   322	// Sub-module references
   323	export const memorySave = lazyModule(getMemorySaveModule);
   324	export const memoryIndex = lazyModule(getMemoryIndexModule);
   325	export const memoryBulkDelete = lazyModule(getMemoryBulkDeleteModule);

exec
/bin/zsh -lc "nl -ba .opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts | sed -n '1340,1905p'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
  1340	      discovered: true,
  1341	      specFolder: discoveredFolder,
  1342	      source: 'folder-discovery',
  1343	    } : null,
  1344	    structuralRoutingNudge,
  1345	    ...telemetryMeta,
  1346	  };
  1347	}
  1348	
  1349	/* ───────────────────────────────────────────────────────────────
  1350	   7. MAIN HANDLER
  1351	──────────────────────────────────────────────────────────────── */
  1352	
  1353	/** Handle memory_context tool — L1 orchestration layer that routes to optimal retrieval strategy.
  1354	 * @param args - Context retrieval arguments (intent, mode, specFolder, anchors, etc.)
  1355	 * @returns MCP response with context-aware memory results
  1356	 */
  1357	async function handleMemoryContext(args: ContextArgs): Promise<MCPResponse> {
  1358	  const _contextStartTime = Date.now();
  1359	  const requestId = randomUUID();
  1360	
  1361	  try {
  1362	  try {
  1363	    await checkDatabaseUpdated();
  1364	  } catch (error: unknown) {
  1365	    const message = error instanceof Error ? error.message : String(error);
  1366	    return createMCPErrorResponse({
  1367	      tool: 'memory_context',
  1368	      error: `Database state check failed: ${message}`,
  1369	      code: 'E_INTERNAL',
  1370	      details: { requestId, layer: 'L1:Orchestration' },
  1371	      recovery: {
  1372	        hint: 'The memory database may be unavailable. Retry or check database connectivity.',
  1373	      },
  1374	    });
  1375	  }
  1376	
  1377	  const {
  1378	    input,
  1379	    mode: requested_mode = 'auto',
  1380	    intent: explicit_intent,
  1381	    specFolder: spec_folder,
  1382	    limit,
  1383	    enableDedup: enableDedup = true,
  1384	    includeContent: include_content = false,
  1385	    tokenUsage,
  1386	    anchors
  1387	  } = args;
  1388	
  1389	  // Validate input
  1390	  if (!input || typeof input !== 'string' || input.trim().length === 0) {
  1391	    return createMCPErrorResponse({
  1392	      tool: 'memory_context',
  1393	      error: 'Input is required and must be a non-empty string',
  1394	      code: 'E_VALIDATION',
  1395	      details: { requestId, layer: 'L1:Orchestration' },
  1396	      recovery: {
  1397	        hint: 'Provide a query, prompt, or context description'
  1398	      }
  1399	    });
  1400	  }
  1401	
  1402	  const normalizedInput = input.trim();
  1403	
  1404	  // ── Phase 020: Query-Intent Routing ──────────────────────────
  1405	  // Classify query intent and optionally augment response with code
  1406	  // graph context for structural/hybrid queries. Entire block is
  1407	  // wrapped in try/catch — any failure silently falls through to
  1408	  // existing semantic logic.
  1409	  let queryIntentMetadata: QueryIntentMetadata | null = null;
  1410	  let graphContextResult: Record<string, unknown> | null = null;
  1411	
  1412	  if (requested_mode !== 'resume') {
  1413	    try {
  1414	      const classification = classifyQueryIntent(normalizedInput);
  1415	      queryIntentMetadata = {
  1416	        queryIntent: classification.intent,
  1417	        routedBackend: classification.intent === 'structural' && classification.confidence > 0.65
  1418	          ? 'structural'
  1419	          : classification.intent === 'hybrid'
  1420	            ? 'hybrid'
  1421	            : 'semantic',
  1422	        confidence: classification.confidence,
  1423	        matchedKeywords: classification.matchedKeywords,
  1424	      };
  1425	
  1426	      // F050: Extract a symbol-like token from the query instead of passing
  1427	      // raw prose to buildContext({ subject }). resolveSubjectToRef() matches
  1428	      // against code_nodes.name / fq_name, so prose never resolves.
  1429	      // Heuristic: pick the first token that looks like a code identifier
  1430	      // (contains uppercase, underscore, or dot — e.g. "buildContext", "fq_name",
  1431	      // "code-graph-db.ts"). Falls back to first matched keyword, then normalizedInput.
  1432	      const codeIdentifierPattern = /[A-Z_.]|^[a-z]+[A-Z]/;
  1433	      const inputTokens = normalizedInput.split(/\s+/).filter(t => t.length >= 2);
  1434	      const extractedSubject =
  1435	        inputTokens.find(t => codeIdentifierPattern.test(t)) ??
  1436	        (classification.matchedKeywords?.[0]) ??
  1437	        normalizedInput;
  1438	
  1439	      if (classification.intent === 'structural' && classification.confidence > 0.65) {
  1440	        try {
  1441	          const cgResult = buildContext({ input: normalizedInput, subject: extractedSubject });
  1442	          if (cgResult.metadata.totalNodes > 0) {
  1443	            graphContextResult = {
  1444	              graphContext: cgResult.graphContext,
  1445	              textBrief: cgResult.textBrief,
  1446	              combinedSummary: cgResult.combinedSummary,
  1447	              nextActions: cgResult.nextActions,
  1448	              metadata: cgResult.metadata,
  1449	            };
  1450	          }
  1451	        } catch {
  1452	          // Code graph unavailable — fall through to semantic
  1453	        }
  1454	      } else if (classification.intent === 'hybrid') {
  1455	        try {
  1456	          const cgResult = buildContext({ input: normalizedInput, subject: extractedSubject });
  1457	          if (cgResult.metadata.totalNodes > 0) {
  1458	            graphContextResult = {
  1459	              graphContext: cgResult.graphContext,
  1460	              textBrief: cgResult.textBrief,
  1461	              combinedSummary: cgResult.combinedSummary,
  1462	              nextActions: cgResult.nextActions,
  1463	              metadata: cgResult.metadata,
  1464	            };
  1465	          }
  1466	        } catch {
  1467	          // Code graph unavailable — hybrid degrades to semantic-only
  1468	        }
  1469	      }
  1470	      // 'semantic' or low-confidence: no graph context, fall through
  1471	    } catch {
  1472	      // Classification failed — fall through to existing logic entirely
  1473	    }
  1474	  }
  1475	
  1476	  // Eval logger — capture context query at entry (fail-safe)
  1477	  let _evalQueryId = 0;
  1478	  let _evalRunId = 0;
  1479	  try {
  1480	    const evalEntry = logSearchQuery({
  1481	      query: normalizedInput,
  1482	      intent: explicit_intent ?? null,
  1483	      specFolder: spec_folder ?? null,
  1484	    });
  1485	    _evalQueryId = evalEntry.queryId;
  1486	    _evalRunId = evalEntry.evalRunId;
  1487	  } catch {
  1488	    // Intentional no-op — error deliberately discarded
  1489	  }
  1490	
  1491	  const {
  1492	    requestedSessionId,
  1493	    effectiveSessionId,
  1494	    resumed: resumedSession,
  1495	    priorMode: previousState,
  1496	    counter: eventCounterStart,
  1497	    error: sessionScopeError,
  1498	  } = resolveSessionLifecycle(args, null);
  1499	  if (sessionScopeError) {
  1500	    return createMCPErrorResponse({
  1501	      tool: 'memory_context',
  1502	      error: sessionScopeError,
  1503	      code: 'E_SESSION_SCOPE',
  1504	      details: { requestId, layer: 'L1:Orchestration', requestedSessionId: args.sessionId ?? null },
  1505	      recovery: {
  1506	        hint: 'Retry without sessionId to let the server mint a trusted session, then reuse the returned effectiveSessionId.',
  1507	      },
  1508	    });
  1509	  }
  1510	  const sessionLifecycle: SessionLifecycleMetadata = {
  1511	    sessionScope: requestedSessionId ? 'caller' : 'ephemeral',
  1512	    requestedSessionId,
  1513	    effectiveSessionId,
  1514	    resumed: resumedSession,
  1515	    eventCounterStart,
  1516	    resumedContextCount: 0,
  1517	  };
  1518	
  1519	  // Get layer info for response metadata
  1520	  const layerInfo: LayerInfo | null = layerDefs.getLayerInfo('memory_context');
  1521	  const tokenBudget = layerInfo?.tokenBudget ?? 2000;
  1522	
  1523	  const runtimeContextStats: RuntimeContextStats = {
  1524	    tokenBudget,
  1525	  };
  1526	  try {
  1527	    runtimeContextStats.tokenCount = estimateTokens(normalizedInput);
  1528	  } catch {
  1529	    runtimeContextStats.tokenCount = undefined;
  1530	  }
  1531	
  1532	  // Resolve token pressure (caller -> estimator -> unavailable)
  1533	  const pressurePolicyEnabled = isPressurePolicyEnabled(effectiveSessionId);
  1534	  const autoResumeEnabled = isAutoResumeEnabled(effectiveSessionId);
  1535	
  1536	  const pressurePolicy = pressurePolicyEnabled
  1537	    ? getPressureLevel(tokenUsage, runtimeContextStats)
  1538	    : {
  1539	        level: 'none' as const,
  1540	        ratio: null,
  1541	        source: 'unavailable' as const,
  1542	        warning: null,
  1543	      };
  1544	  if (pressurePolicy.warning) {
  1545	    console.warn(pressurePolicy.warning);
  1546	  }
  1547	
  1548	  // Build options object for strategy executors
  1549	  const options: ContextOptions = {
  1550	    specFolder: spec_folder,
  1551	    tenantId: args.tenantId,
  1552	    userId: args.userId,
  1553	    agentId: args.agentId,
  1554	    limit,
  1555	    sessionId: effectiveSessionId,
  1556	    enableDedup: enableDedup,
  1557	    includeContent: include_content,
  1558	    includeTrace: (args as unknown as Record<string, unknown>).includeTrace === true, // CHK-040
  1559	    anchors,
  1560	    profile: args.profile,
  1561	  };
  1562	
  1563	  const {
  1564	    effectiveMode,
  1565	    pressureOverrideApplied,
  1566	    pressureOverrideTargetMode,
  1567	    pressureWarning,
  1568	    intentClassification,
  1569	  } = resolveEffectiveMode(
  1570	    { ...args, input: normalizedInput },
  1571	    {
  1572	      requestedSessionId,
  1573	      effectiveSessionId,
  1574	      resumed: resumedSession,
  1575	      priorMode: previousState,
  1576	      counter: eventCounterStart,
  1577	    },
  1578	    pressurePolicy,
  1579	  );
  1580	  const {
  1581	    detectedIntent,
  1582	    intentConfidence,
  1583	    intentEvidence,
  1584	    resumeHeuristicApplied,
  1585	    source: intentSource,
  1586	  } = intentClassification;
  1587	
  1588	  // Phase C: Intent-to-profile auto-routing for memory_context.
  1589	  // Explicit caller `profile` always takes precedence; auto-detect fills in when absent.
  1590	  // Skip for 'quick' mode: quick routes through handleMemoryMatchTriggers which does not
  1591	  // support profile formatting — setting a profile there would be a no-op.
  1592	  if (!options.profile && detectedIntent && effectiveMode !== 'quick' && isIntentAutoProfileEnabled()) {
  1593	    try {
  1594	      const autoProfile = intentClassifier.getProfileForIntent(
  1595	        detectedIntent as import('../lib/search/intent-classifier.js').IntentType
  1596	      );
  1597	      if (autoProfile) {
  1598	        options.profile = autoProfile;
  1599	        console.error(`[memory-context] Intent-to-profile auto-routing: '${detectedIntent}' → profile '${autoProfile}'`);
  1600	      }
  1601	    } catch (_autoProfileErr: unknown) {
  1602	      // Auto-profile is best-effort — never breaks context retrieval
  1603	    }
  1604	  }
  1605	
  1606	  const sessionTransition = buildSessionTransitionTrace({
  1607	    previousState,
  1608	    resumedSession,
  1609	    effectiveMode,
  1610	    requestedMode: requested_mode,
  1611	    detectedIntent: detectedIntent ?? null,
  1612	    pressureOverrideApplied,
  1613	    queryHeuristicApplied: resumeHeuristicApplied,
  1614	  });
  1615	  options.sessionTransition = options.includeTrace === true ? sessionTransition : undefined;
  1616	
  1617	  const discoveredFolder = maybeDiscoverSpecFolder(options, { ...args, input: normalizedInput });
  1618	  // FIX P0: Folder discovery sets options.folderBoost for scoring only.
  1619	  // Do NOT propagate as options.specFolder — that becomes an exact-match filter
  1620	  // in vector-index-queries.ts (m.spec_folder = ?) which silently drops all
  1621	  // results when the discovered path has no indexed memories.
  1622	  const sessionStateResult = sessionManager.saveSessionState(effectiveSessionId, {
  1623	    specFolder: options.specFolder ?? discoveredFolder ?? spec_folder,
  1624	    tenantId: args.tenantId,
  1625	    userId: args.userId,
  1626	    agentId: args.agentId,
  1627	    currentTask: normalizedInput.slice(0, 500),
  1628	  });
  1629	  if (!sessionStateResult.success) {
  1630	    console.warn(
  1631	      `[memory-context] Failed to persist session identity for ${effectiveSessionId}: ${sessionStateResult.error ?? 'unknown error'}`,
  1632	    );
  1633	  }
  1634	
  1635	  let result: ContextResult;
  1636	  try {
  1637	    result = await executeStrategy(effectiveMode, options, {
  1638	      ...args,
  1639	      input: normalizedInput,
  1640	      intent: detectedIntent,
  1641	    });
  1642	  } catch (error: unknown) {
  1643	    console.error(`[memory-context] Strategy execution failed [requestId=${requestId}]:`, toErrorMessage(error));
  1644	    return createMCPErrorResponse({
  1645	      tool: 'memory_context',
  1646	      error: toErrorMessage(error),
  1647	      code: 'E_STRATEGY',
  1648	      details: {
  1649	        requestId,
  1650	        layer: 'L1:Orchestration',
  1651	        mode: effectiveMode,
  1652	        alternativeLayers: layerDefs.getRecommendedLayers('search')
  1653	      },
  1654	      recovery: {
  1655	        hint: 'Try a different mode or check your input'
  1656	      }
  1657	    });
  1658	  }
  1659	
  1660	  const strategyError = extractStrategyError(result);
  1661	  if (strategyError) {
  1662	    return createMCPErrorResponse({
  1663	      tool: 'memory_context',
  1664	      error: strategyError.error,
  1665	      code: strategyError.code,
  1666	      details: {
  1667	        requestId,
  1668	        layer: 'L1:Orchestration',
  1669	        mode: effectiveMode,
  1670	        upstream: strategyError.details,
  1671	      },
  1672	      recovery: {
  1673	        hint: strategyError.hints[0] ?? 'Try a different mode or check your input',
  1674	        actions: strategyError.hints.slice(1),
  1675	        severity: strategyError.severity ?? 'error',
  1676	      },
  1677	    });
  1678	  }
  1679	
  1680	  // FIX RC1-A (superseded by P0 fix): Folder discovery no longer promotes to
  1681	  // options.specFolder, so the recovery retry is no longer needed. The folder
  1682	  // boost still applies via options.folderBoost for scoring prioritization.
  1683	
  1684	  try {
  1685	    workingMemory.setSessionInferredMode(effectiveSessionId, effectiveMode);
  1686	  } catch (error: unknown) {
  1687	    void error;
  1688	    // Best-effort session state write — do not fail the handler
  1689	  }
  1690	
  1691	  // T205: Determine effective token budget from mode or layer definitions
  1692	  const modeTokenBudget = CONTEXT_MODES[effectiveMode]?.tokenBudget;
  1693	  const effectiveBudget = modeTokenBudget || tokenBudget;
  1694	
  1695	  // M1 FIX: Inject auto-resume context BEFORE budget enforcement
  1696	  // so the final response respects the advertised token budget.
  1697	  const tracedResult0: ContextResult = effectiveMode === 'quick' && options.includeTrace === true
  1698	    ? attachSessionTransitionTrace(
  1699	      result as ContextResult & { content?: Array<{ text?: string; type?: string }> },
  1700	      sessionTransition,
  1701	    ) as ContextResult
  1702	    : result;
  1703	
  1704	  if (autoResumeEnabled && effectiveMode === 'resume' && resumedSession) {
  1705	    const resumeContextItems = workingMemory.getSessionPromptContext(effectiveSessionId, workingMemory.DECAY_FLOOR, 5);
  1706	    if (resumeContextItems.length > 0) {
  1707	      sessionLifecycle.resumedContextCount = resumeContextItems.length;
  1708	      (tracedResult0 as Record<string, unknown>).systemPromptContext = resumeContextItems.map((item) => ({
  1709	        memoryId: item.memoryId,
  1710	        title: item.title,
  1711	        filePath: item.filePath,
  1712	        attentionScore: item.attentionScore,
  1713	      }));
  1714	      (tracedResult0 as Record<string, unknown>).systemPromptContextInjected = true;
  1715	    }
  1716	  }
  1717	
  1718	  // T205: Enforce token budget AFTER all context injection
  1719	  const { result: budgetedResult, enforcement } = enforceTokenBudget(tracedResult0, effectiveBudget);
  1720	  const tracedResult = budgetedResult;
  1721	  const intentTelemetry = detectedIntent ? intentClassifier.emitIntentTelemetry(normalizedInput, {
  1722	    taskIntent: {
  1723	      intent: detectedIntent,
  1724	      confidence: intentConfidence,
  1725	      evidence: intentEvidence,
  1726	    },
  1727	    backendRouting: {
  1728	      route: queryIntentMetadata?.routedBackend ?? 'semantic',
  1729	      confidence: queryIntentMetadata?.confidence ?? 0,
  1730	    },
  1731	  }) : null;
  1732	
  1733	  // Phase 020: Attach graph context and query-intent routing metadata
  1734	  const responseData: ContextResult & Record<string, unknown> = { ...tracedResult };
  1735	  if (graphContextResult) {
  1736	    responseData.graphContext = graphContextResult;
  1737	  }
  1738	  if (queryIntentMetadata) {
  1739	    // REQ-004 (Cluster 2): Annotate explicitly so callers do not confuse this
  1740	    // backend-channel selector with the authoritative `meta.intent` task intent.
  1741	    responseData.queryIntentRouting = {
  1742	      ...queryIntentMetadata,
  1743	      route: queryIntentMetadata.routedBackend,
  1744	      classificationKind: 'backend-routing',
  1745	      authoritativeFor: ['channel-selection'],
  1746	      seeAlso: 'meta.intent',
  1747	    };
  1748	  }
  1749	  const structuralRoutingNudge = buildStructuralRoutingNudge(
  1750	    normalizedInput,
  1751	    queryIntentMetadata,
  1752	    graphContextResult,
  1753	  );
  1754	  if (structuralRoutingNudge) {
  1755	    responseData.structuralRoutingNudge = structuralRoutingNudge;
  1756	  }
  1757	
  1758	  // Build response with layer metadata
  1759	  const _contextResponse = createMCPResponse({
  1760	    tool: 'memory_context',
  1761	    summary: enforcement.truncated
  1762	      ? `Context retrieved via ${effectiveMode} mode (${tracedResult.strategy} strategy) [truncated${enforcement.originalResultCount !== undefined ? `: ${enforcement.originalResultCount} → ${enforcement.returnedResultCount} results` : ''} to fit ${effectiveBudget} token budget]`
  1763	      : `Context retrieved via ${effectiveMode} mode (${tracedResult.strategy} strategy)`,
  1764	    data: responseData,
  1765	    hints: [
  1766	      `Mode: ${CONTEXT_MODES[effectiveMode].description}`,
  1767	      `For more granular control, use L2 tools: memory_search, memory_match_triggers`,
  1768	      `Token budget: ${effectiveBudget} (${effectiveMode} mode)`,
  1769	      ...(structuralRoutingNudge ? [structuralRoutingNudge.message] : []),
  1770	      ...(pressureWarning ? [pressureWarning] : [])
  1771	    ],
  1772	    extraMeta: buildResponseMeta({
  1773	      effectiveMode,
  1774	      requestedMode: requested_mode,
  1775	      tracedResult,
  1776	      pressurePolicy,
  1777	      pressureOverrideApplied,
  1778	      pressureOverrideTargetMode,
  1779	      pressureWarning,
  1780	      sessionLifecycle,
  1781	      effectiveBudget,
  1782	      enforcement,
  1783	      intentClassification: {
  1784	        detectedIntent,
  1785	        intentConfidence,
  1786	        intentEvidence,
  1787	        resumeHeuristicApplied,
  1788	        source: intentSource,
  1789	      },
  1790	      discoveredFolder,
  1791	      includeTrace: options.includeTrace === true,
  1792	      sessionTransition,
  1793	      structuralRoutingNudge,
  1794	      intentTelemetry,
  1795	    })
  1796	  });
  1797	
  1798	  // Consumption instrumentation — log context event (fail-safe, never throws)
  1799	  try {
  1800	    const db = vectorIndex.getDb();
  1801	    if (db) {
  1802	      initConsumptionLog(db);
  1803	      let resultIds: number[] = [];
  1804	      let resultCount = 0;
  1805	      try {
  1806	        if (_contextResponse?.content?.[0]?.text) {
  1807	          const innerResults = extractResultRowsFromContextResponse(_contextResponse.content[0].text);
  1808	          resultIds = innerResults.map(r => r.id as number).filter(id => typeof id === 'number');
  1809	          resultCount = innerResults.length;
  1810	        }
  1811	      } catch {
  1812	        // Intentional no-op — error deliberately discarded
  1813	      }
  1814	      logConsumptionEvent(db, {
  1815	        event_type: 'context',
  1816	        query_text: normalizedInput,
  1817	        intent: detectedIntent ?? null,
  1818	        mode: effectiveMode,
  1819	        result_count: resultCount,
  1820	        result_ids: resultIds,
  1821	        session_id: effectiveSessionId,
  1822	        latency_ms: Date.now() - _contextStartTime,
  1823	        spec_folder_filter: spec_folder ?? null,
  1824	      });
  1825	    }
  1826	  } catch {
  1827	    // Intentional no-op — error deliberately discarded
  1828	  }
  1829	
  1830	  // Eval logger — capture final context results at exit (fail-safe)
  1831	  try {
  1832	    if (_evalRunId && _evalQueryId) {
  1833	      let finalMemoryIds: number[] = [];
  1834	      let finalScores: number[] = [];
  1835	      try {
  1836	        if (_contextResponse?.content?.[0]?.text) {
  1837	          const innerResults = extractResultRowsFromContextResponse(_contextResponse.content[0].text);
  1838	          finalMemoryIds = innerResults.map(r => (r.id ?? r.memoryId) as number).filter(id => typeof id === 'number');
  1839	          finalScores = innerResults.map(r => (r.score ?? r.similarity ?? 0) as number);
  1840	        }
  1841	      } catch {
  1842	        // Intentional no-op — error deliberately discarded
  1843	      }
  1844	      logFinalResult({
  1845	        evalRunId: _evalRunId,
  1846	        queryId: _evalQueryId,
  1847	        resultMemoryIds: finalMemoryIds,
  1848	        scores: finalScores,
  1849	        fusionMethod: effectiveMode,
  1850	        latencyMs: Date.now() - _contextStartTime,
  1851	      });
  1852	
  1853	      const strategy = typeof budgetedResult?.strategy === 'string' && budgetedResult.strategy.length > 0
  1854	        ? budgetedResult.strategy
  1855	        : effectiveMode;
  1856	      logChannelResult({
  1857	        evalRunId: _evalRunId,
  1858	        queryId: _evalQueryId,
  1859	        channel: `context_${strategy}`,
  1860	        resultMemoryIds: finalMemoryIds,
  1861	        scores: finalScores,
  1862	        hitCount: finalMemoryIds.length,
  1863	        latencyMs: Date.now() - _contextStartTime,
  1864	      });
  1865	    }
  1866	  } catch {
  1867	    // Intentional no-op — error deliberately discarded
  1868	  }
  1869	
  1870	  return _contextResponse;
  1871	  } catch (error: unknown) {
  1872	    console.error(`[memory-context] Unexpected failure [requestId=${requestId}]:`, error);
  1873	    return createMCPErrorResponse({
  1874	      tool: 'memory_context',
  1875	      error: 'memory_context failed due to an internal error',
  1876	      code: 'E_INTERNAL',
  1877	      details: { requestId, layer: 'L1:Orchestration' },
  1878	      recovery: {
  1879	        hint: 'Retry the request. If the problem persists, inspect stderr logs for the full error details.',
  1880	      },
  1881	    });
  1882	  }
  1883	}
  1884	
  1885	/* ───────────────────────────────────────────────────────────────
  1886	   7. EXPORTS
  1887	──────────────────────────────────────────────────────────────── */
  1888	
  1889	export {
  1890	  handleMemoryContext,
  1891	  CONTEXT_MODES,
  1892	  INTENT_TO_MODE,
  1893	  enforceTokenBudget,
  1894	};
  1895	
  1896	// Backward-compatible aliases (snake_case)
  1897	const handle_memory_context = handleMemoryContext;
  1898	
  1899	export {
  1900	  handle_memory_context,
  1901	};

exec
/bin/zsh -lc "rg -n \"handleMemoryContext|handle_memory_context|case 'memory_context'|name === 'memory_context'|memory_context\\(\" .opencode/skills/system-spec-kit/mcp_server --glob '"'!**/tests/**'"' --glob '"'!**/*.md'"' --glob '"'!**/lib/eval/data/**'"'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
.opencode/skills/system-spec-kit/mcp_server/context-server.ts:818:        snap.sessionQuality === 'critical' ? 'call memory_context(resume)' : 'ready';
.opencode/skills/system-spec-kit/mcp_server/context-server.ts:943:    if (name === 'memory_context' && args.mode === 'resume') {
.opencode/skills/system-spec-kit/mcp_server/context-server.ts:973:      name === 'memory_context' && args.mode === 'resume';
.opencode/skills/system-spec-kit/mcp_server/context-server.ts:1041:    if ((name === 'memory_search' || name === 'memory_context') && result && !result.isError && result.content?.[0]?.text) {
.opencode/skills/system-spec-kit/mcp_server/lib/session/context-metrics.ts:224:  //   recovery (0.20)      — A memory_context({ mode: "resume" }) call is the most
.opencode/skills/system-spec-kit/mcp_server/hooks/memory-surface.ts:460:    recommendedCalls.push('memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })');
.opencode/skills/system-spec-kit/mcp_server/hooks/codex/session-start.ts:95:        content: `Last active spec folder: ${state.lastSpecFolder}\nCall \`memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })\` for full context.`,
.opencode/skills/system-spec-kit/mcp_server/hooks/codex/session-start.ts:101:    content: 'Call `memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })` to restore session state.',
.opencode/skills/system-spec-kit/mcp_server/tools/context-tools.ts:5:import { handleMemoryContext } from '../handlers/index.js';
.opencode/skills/system-spec-kit/mcp_server/tools/context-tools.ts:16:    case 'memory_context': return handleMemoryContext(parseArgs<ContextArgs>(validateToolArgs('memory_context', args)));
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:66:      content: 'Context was compressed. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:77:      content: 'Context was compressed. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:89:      content: 'Context was compressed, but the cached compact brief was quarantined by semantic validation. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:106:      content: 'Context was compressed and auto-recovered. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:188:        '- `memory_context({ input, mode })` - unified context retrieval',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:239:      content: `Last active spec folder: ${state.lastSpecFolder}\nCall \`memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })\` for full context.`,
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:245:    content: 'Call `memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })` to restore session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:62:      content: 'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:73:      content: 'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:85:      content: 'Context was compacted, but the cached compact brief was quarantined by semantic validation. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:103:      content: 'Context was compacted and auto-recovered from the cached compact brief. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:248:        '- `memory_context({ input, mode })` — unified context retrieval',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:306:      content: `Last active spec folder: ${state.lastSpecFolder}\nCall \`memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })\` for full context.`,
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:311:      content: 'Call `memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })` to restore session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:126:      'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:136:      'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:147:      'Context was compacted, but the cached compact brief was quarantined by semantic validation. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:164:    'Context was compacted and auto-recovered from the cached compact brief. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/compact-inject.ts:85:    'Context was compressed and auto-recovered. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/custom-instructions.ts:35:const STARTUP_FALLBACK = 'Startup context unavailable. Call `session_bootstrap()` or `memory_context({ mode: "resume", profile: "resume" })` if more context is needed.';
.opencode/skills/system-spec-kit/mcp_server/lib/enrichment/passive-enrichment.ts:129:      return ['[session] Context quality is CRITICAL. Consider running `memory_context({ mode: "resume" })` or `session_health` to diagnose.'];
.opencode/skills/system-spec-kit/mcp_server/handlers/index.ts:310:export const handleMemoryContext = lazyFunction(getMemoryContextModule, 'handleMemoryContext');
.opencode/skills/system-spec-kit/mcp_server/handlers/index.ts:311:export const handle_memory_context = lazyFunction(getMemoryContextModule, 'handle_memory_context');
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1357:async function handleMemoryContext(args: ContextArgs): Promise<MCPResponse> {
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1890:  handleMemoryContext,
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1897:const handle_memory_context = handleMemoryContext;
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1900:  handle_memory_context,

exec
/bin/zsh -lc "rg -n \"memory_context\\s*[:=]|memory_context\\(\" .opencode/skills/system-spec-kit/mcp_server --glob '"'!**/tests/**'"' --glob '"'!**/*.md'"' --glob '"'!**/lib/eval/data/**'"'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
.opencode/skills/system-spec-kit/mcp_server/context-server.ts:818:        snap.sessionQuality === 'critical' ? 'call memory_context(resume)' : 'ready';
.opencode/skills/system-spec-kit/mcp_server/schemas/tool-input-schemas.ts:586:  memory_context: memoryContextSchema as unknown as ToolInputSchema,
.opencode/skills/system-spec-kit/mcp_server/schemas/tool-input-schemas.ts:646:  memory_context: ['input', 'mode', 'intent', 'specFolder', 'tenantId', 'userId', 'agentId', 'limit', 'sessionId', 'enableDedup', 'includeContent', 'includeTrace', 'tokenUsage', 'anchors', 'profile'],
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/custom-instructions.ts:35:const STARTUP_FALLBACK = 'Startup context unavailable. Call `session_bootstrap()` or `memory_context({ mode: "resume", profile: "resume" })` if more context is needed.';
.opencode/skills/system-spec-kit/mcp_server/lib/session/context-metrics.ts:224:  //   recovery (0.20)      — A memory_context({ mode: "resume" }) call is the most
.opencode/skills/system-spec-kit/mcp_server/hooks/memory-surface.ts:460:    recommendedCalls.push('memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })');
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:126:      'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:136:      'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:147:      'Context was compacted, but the cached compact brief was quarantined by semantic validation. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:164:    'Context was compacted and auto-recovered from the cached compact brief. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
.opencode/skills/system-spec-kit/mcp_server/hooks/codex/session-start.ts:95:        content: `Last active spec folder: ${state.lastSpecFolder}\nCall \`memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })\` for full context.`,
.opencode/skills/system-spec-kit/mcp_server/hooks/codex/session-start.ts:101:    content: 'Call `memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })` to restore session state.',
.opencode/skills/system-spec-kit/mcp_server/handlers/memory-context.ts:1897:const handle_memory_context = handleMemoryContext;
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:66:      content: 'Context was compressed. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:77:      content: 'Context was compressed. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:89:      content: 'Context was compressed, but the cached compact brief was quarantined by semantic validation. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:106:      content: 'Context was compressed and auto-recovered. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:188:        '- `memory_context({ input, mode })` - unified context retrieval',
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:239:      content: `Last active spec folder: ${state.lastSpecFolder}\nCall \`memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })\` for full context.`,
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:245:    content: 'Call `memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })` to restore session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:62:      content: 'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:73:      content: 'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:85:      content: 'Context was compacted, but the cached compact brief was quarantined by semantic validation. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:103:      content: 'Context was compacted and auto-recovered from the cached compact brief. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:248:        '- `memory_context({ input, mode })` — unified context retrieval',
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:306:      content: `Last active spec folder: ${state.lastSpecFolder}\nCall \`memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })\` for full context.`,
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:311:      content: 'Call `memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })` to restore session state.',
.opencode/skills/system-spec-kit/mcp_server/handlers/index.ts:311:export const handle_memory_context = lazyFunction(getMemoryContextModule, 'handle_memory_context');
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/compact-inject.ts:85:    'Context was compressed and auto-recovered. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
.opencode/skills/system-spec-kit/mcp_server/lib/errors/core.ts:55:  memory_context: ERROR_CODES.SEARCH_FAILED,
.opencode/skills/system-spec-kit/mcp_server/lib/enrichment/passive-enrichment.ts:129:      return ['[session] Context quality is CRITICAL. Consider running `memory_context({ mode: "resume" })` or `session_health` to diagnose.'];

exec
/bin/zsh -lc "nl -ba .opencode/skills/system-spec-kit/mcp_server/hooks/memory-surface.ts | sed -n '430,470p'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
   430	  for (const f of taskFields) {
   431	    if (typeof toolArgs[f] === 'string' && (toolArgs[f] as string).length >= 3) {
   432	      currentTask = (toolArgs[f] as string).slice(0, 200);
   433	      break;
   434	    }
   435	  }
   436	
   437	  // Code graph freshness
   438	  let codeGraphStatus: PrimePackage['codeGraphStatus'] = 'empty';
   439	  if (graphSnapshot.status === 'ok' && graphSnapshot.data) {
   440	    const lastScan = graphSnapshot.data.lastScanAt;
   441	    const totalFiles = graphSnapshot.data.totalFiles ?? 0;
   442	    if (totalFiles === 0) {
   443	      codeGraphStatus = 'empty';
   444	    } else if (!lastScan || (Date.now() - new Date(lastScan).getTime() > 24 * 60 * 60 * 1000)) {
   445	      codeGraphStatus = 'stale';
   446	    } else {
   447	      codeGraphStatus = 'fresh';
   448	    }
   449	  }
   450	
   451	  // F046: CocoIndex availability via shared helper (no process.cwd())
   452	  const cocoIndexAvailable = isCocoIndexAvailable();
   453	
   454	  // Build recommended calls based on state
   455	  const recommendedCalls: string[] = [];
   456	  if (codeGraphStatus === 'stale' || codeGraphStatus === 'empty') {
   457	    recommendedCalls.push('code_graph_scan');
   458	  }
   459	  if (!specFolder) {
   460	    recommendedCalls.push('memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })');
   461	  }
   462	  if (cocoIndexAvailable && recommendedCalls.length === 0) {
   463	    recommendedCalls.push('memory_match_triggers({ prompt: "<your task>" })');
   464	  }
   465	
   466	  const toolRoutingRules: string[] = [];
   467	  if (cocoIndexAvailable) {
   468	    toolRoutingRules.push('semantic/concept queries → mcp__cocoindex_code__search');
   469	  }
   470	  if (codeGraphStatus !== 'empty') {

exec
/bin/zsh -lc "nl -ba .opencode/skills/system-spec-kit/mcp_server/hooks/codex/session-start.ts | sed -n '70,115p'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
    70	    return null;
    71	  }
    72	  if (typeof input.session_id === 'string' && input.session_id.trim().length > 0) {
    73	    return input.session_id.trim();
    74	  }
    75	  if (typeof input.sessionId === 'string' && input.sessionId.trim().length > 0) {
    76	    return input.sessionId.trim();
    77	  }
    78	  return null;
    79	}
    80	
    81	function sourceFor(input: CodexSessionStartInput | null): CodexSessionStartSource {
    82	  if (input?.source === 'resume' || input?.source === 'clear') {
    83	    return input.source;
    84	  }
    85	  return 'startup';
    86	}
    87	
    88	function defaultResumeSections(sessionId: string | null): OutputSection[] {
    89	  if (sessionId) {
    90	    const stateResult = loadState(sessionId);
    91	    const state = stateResult.ok ? stateResult.state : null;
    92	    if (state?.lastSpecFolder) {
    93	      return [{
    94	        title: 'Session Continuity',
    95	        content: `Last active spec folder: ${state.lastSpecFolder}\nCall \`memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })\` for full context.`,
    96	      }];
    97	    }
    98	  }
    99	  return [{
   100	    title: 'Session Resume',
   101	    content: 'Call `memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })` to restore session state.',
   102	  }];
   103	}
   104	
   105	function defaultClearSections(): OutputSection[] {
   106	  return [{
   107	    title: 'Fresh Context',
   108	    content: 'Session cleared. Spec Kit Memory is active. Use `memory_context` or `memory_match_triggers` to load relevant context.',
   109	  }];
   110	}
   111	
   112	function adjustedBudgetFor(input: CodexSessionStartInput | null): number {
   113	  return calculatePressureAdjustedBudget(
   114	    input?.context_window_tokens,
   115	    input?.context_window_max,

exec
/bin/zsh -lc "nl -ba .opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts | sed -n '40,115p;230,320p'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
    40	};
    41	
    42	// Dynamic import for startup brief builder — may not be available
    43	let buildStartupBrief: ((highlightCount?: number, stateScope?: { specFolder?: string; claudeSessionId?: string }) => StartupBrief) | null = null;
    44	let startupBriefImportError: string | null = null;
    45	try {
    46	  const mod = await import('../../code_graph/lib/startup-brief.js');
    47	  buildStartupBrief = mod.buildStartupBrief;
    48	} catch (err: unknown) {
    49	  startupBriefImportError = err instanceof Error ? err.message : String(err);
    50	  // Startup brief module not available — keep static startup output
    51	}
    52	
    53	/** Handle source=compact: inject cached PreCompact payload (from 3-source merger) */
    54	function handleCompact(sessionId: string): OutputSection[] {
    55	  const stateResult = loadState(sessionId);
    56	  const state = stateResult.ok ? stateResult.state : null;
    57	  const pendingCompactPrime = readCompactPrime(sessionId);
    58	  if (!pendingCompactPrime) {
    59	    hookLog('warn', 'session-prime', `No cached compact payload for session ${sessionId}`);
    60	    return [{
    61	      title: 'Context Recovery',
    62	      content: 'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
    63	    }];
    64	  }
    65	
    66	  const { payload, cachedAt } = pendingCompactPrime;
    67	  const cachedAtMs = new Date(cachedAt).getTime();
    68	  const cacheAgeMs = Date.now() - cachedAtMs;
    69	  if (Number.isNaN(cachedAtMs) || cacheAgeMs >= CACHE_TTL_MS) {
    70	    hookLog('warn', 'session-prime', `Rejecting stale compact cache for session ${sessionId} (cached at ${cachedAt})`);
    71	    return [{
    72	      title: 'Context Recovery',
    73	      content: 'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
    74	    }];
    75	  }
    76	  const semanticValidation = validatePendingCompactPrimeSemantics(pendingCompactPrime);
    77	  if (!semanticValidation.ok) {
    78	    hookLog('warn', 'session-prime', `Rejecting compact cache for session ${sessionId}: ${semanticValidation.reason}`);
    79	    clearCompactPrime(sessionId, {
    80	      cachedAt: pendingCompactPrime.cachedAt,
    81	      opaqueId: pendingCompactPrime.opaqueId ?? null,
    82	    });
    83	    return [{
    84	      title: 'Context Recovery',
    85	      content: 'Context was compacted, but the cached compact brief was quarantined by semantic validation. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
    86	    }];
    87	  }
    88	
    89	  const sanitizedPayload = sanitizeRecoveredPayload(payload);
    90	  const wrappedPayload = wrapRecoveredCompactPayload(payload, cachedAt, {
    91	    producer: pendingCompactPrime.payloadContract?.provenance.producer,
    92	    trustState: pendingCompactPrime.payloadContract?.provenance.trustState,
    93	    sourceSurface: pendingCompactPrime.payloadContract?.provenance.sourceSurface,
    94	    sanitizerVersion: pendingCompactPrime.payloadContract?.provenance.sanitizerVersion,
    95	    runtimeFingerprint: pendingCompactPrime.payloadContract?.provenance.runtimeFingerprint,
    96	  });
    97	  hookLog('info', 'session-prime', `Injecting cached compact brief (${sanitizedPayload.length} chars after sanitization, cached at ${cachedAt})`);
    98	
    99	  const sections: OutputSection[] = [
   100	    { title: 'Recovered Context (Post-Compaction)', content: wrappedPayload },
   101	    {
   102	      title: 'Recovery Instructions',
   103	      content: 'Context was compacted and auto-recovered from the cached compact brief. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
   104	    },
   105	  ];
   106	
   107	  // Add last spec folder if known
   108	  if (state?.lastSpecFolder) {
   109	    sections.push({
   110	      title: 'Active Spec Folder',
   111	      content: `Last active: ${state.lastSpecFolder}`,
   112	    });
   113	  }
   114	
   115	  return sections;
   230	    : null;
   231	  // T-SRS-04 (R29-002): forward the rejection reason so the startup surface can
   232	  // differentiate schema_mismatch / transcript_identity_mismatch / stale_summary
   233	  // / missing_state instead of collapsing them all into "startup summary only".
   234	  const rejectionReason = cachedSummaryDecision.status === 'rejected'
   235	    ? cachedSummaryDecision.reason
   236	    : null;
   237	  const startupSurface = startupBrief?.startupSurface
   238	    ? rewriteStartupMemoryLine(startupBrief.startupSurface, Boolean(sessionContinuity), rejectionReason)
   239	    : buildFallbackStartupSurface(Boolean(sessionContinuity), rejectionReason);
   240	  const sections: OutputSection[] = [
   241	    {
   242	      title: 'Session Context',
   243	      content: startupSurface,
   244	    },
   245	    {
   246	      title: 'Recovery Tools',
   247	      content: [
   248	        '- `memory_context({ input, mode })` — unified context retrieval',
   249	        '- `memory_match_triggers({ prompt })` — fast trigger matching',
   250	        '- `memory_search({ query })` — semantic search',
   251	        '- `code_graph_scan`, `code_graph_query`, `code_graph_context`, `code_graph_status`',
   252	      ].join('\n'),
   253	    },
   254	  ];
   255	  if (startupBriefWarning) {
   256	    sections.push({
   257	      title: 'Startup Brief Warning',
   258	      content: `${startupBriefWarning}. Using fallback startup context; inspect the startup-brief module before trusting structural priming.`,
   259	    });
   260	  }
   261	  if (startupBrief?.graphOutline) {
   262	    sections.push({
   263	      title: 'Structural Context',
   264	      content: startupBrief.graphOutline,
   265	    });
   266	  } else if (startupBrief?.graphState === 'empty') {
   267	    sections.push({
   268	      title: 'Structural Context',
   269	      content: 'Code graph index is empty. Run `code_graph_scan` to build structural context.',
   270	    });
   271	  }
   272	
   273	  if (startupBrief?.sharedPayloadTransport) {
   274	    sections.push({
   275	      title: 'Startup Payload Contract',
   276	      content: startupBrief.sharedPayloadTransport,
   277	    });
   278	  }
   279	
   280	  if (sessionContinuity) {
   281	    sections.push({
   282	      title: 'Session Continuity',
   283	      content: sessionContinuity,
   284	    });
   285	  }
   286	
   287	  if (startupBrief?.graphState === 'stale') {
   288	    sections.push({
   289	      title: 'Stale Code Graph Warning',
   290	      content: 'Code graph freshness is stale. The first structural read may refresh inline when safe; run `code_graph_scan` for broader stale states.',
   291	    });
   292	  }
   293	
   294	  return sections;
   295	}
   296	
   297	/** Handle source=resume: load resume context for continued session */
   298	function handleResume(sessionId: string): OutputSection[] {
   299	  const stateResult = loadState(sessionId);
   300	  const state = stateResult.ok ? stateResult.state : null;
   301	  const sections: OutputSection[] = [];
   302	
   303	  if (state?.lastSpecFolder) {
   304	    sections.push({
   305	      title: 'Session Continuity',
   306	      content: `Last active spec folder: ${state.lastSpecFolder}\nCall \`memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })\` for full context.`,
   307	    });
   308	  } else {
   309	    sections.push({
   310	      title: 'Session Resume',
   311	      content: 'Call `memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })` to restore session state.',
   312	    });
   313	  }
   314	
   315	  return sections;
   316	}
   317	
   318	/** Handle source=clear: minimal output after /clear */
   319	function handleClear(): OutputSection[] {
   320	  return [

exec
/bin/zsh -lc "nl -ba .opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts | sed -n '50,115p;175,255p'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
    50	try {
    51	  const mod = await import('../../code_graph/lib/startup-brief.js');
    52	  buildStartupBrief = mod.buildStartupBrief;
    53	} catch {
    54	  // Startup brief module not available — keep static startup output
    55	}
    56	
    57	/** Handle source=compact (post-compress): inject cached PreCompress payload */
    58	export function handleCompact(sessionId: string): OutputSection[] {
    59	  const stateResult = loadState(sessionId);
    60	  const state = stateResult.ok ? stateResult.state : null;
    61	  const pendingCompactPrime = readCompactPrime(sessionId);
    62	  if (!pendingCompactPrime) {
    63	    hookLog('warn', 'gemini:session-prime', `No cached compact payload for session ${sessionId}`);
    64	    return [{
    65	      title: 'Context Recovery',
    66	      content: 'Context was compressed. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
    67	    }];
    68	  }
    69	
    70	  const { payload, cachedAt } = pendingCompactPrime;
    71	  const cachedAtMs = new Date(cachedAt).getTime();
    72	  const cacheAgeMs = Date.now() - cachedAtMs;
    73	  if (Number.isNaN(cachedAtMs) || cacheAgeMs >= CACHE_TTL_MS) {
    74	    hookLog('warn', 'gemini:session-prime', `Rejecting stale compact cache (cached at ${cachedAt})`);
    75	    return [{
    76	      title: 'Context Recovery',
    77	      content: 'Context was compressed. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
    78	    }];
    79	  }
    80	  const semanticValidation = validatePendingCompactPrimeSemantics(pendingCompactPrime);
    81	  if (!semanticValidation.ok) {
    82	    hookLog('warn', 'gemini:session-prime', `Rejecting compact cache: ${semanticValidation.reason}`);
    83	    clearCompactPrime(sessionId, {
    84	      cachedAt: pendingCompactPrime.cachedAt,
    85	      opaqueId: pendingCompactPrime.opaqueId ?? null,
    86	    });
    87	    return [{
    88	      title: 'Context Recovery',
    89	      content: 'Context was compressed, but the cached compact brief was quarantined by semantic validation. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
    90	    }];
    91	  }
    92	
    93	  hookLog('info', 'gemini:session-prime', `Injecting cached compact brief (${payload.length} chars, cached at ${cachedAt})`);
    94	
    95	  const wrappedPayload = wrapRecoveredCompactPayload(payload, cachedAt, {
    96	    producer: pendingCompactPrime.payloadContract?.provenance.producer,
    97	    trustState: pendingCompactPrime.payloadContract?.provenance.trustState,
    98	    sourceSurface: pendingCompactPrime.payloadContract?.provenance.sourceSurface,
    99	    sanitizerVersion: pendingCompactPrime.payloadContract?.provenance.sanitizerVersion,
   100	    runtimeFingerprint: pendingCompactPrime.payloadContract?.provenance.runtimeFingerprint,
   101	  });
   102	  const sections: OutputSection[] = [
   103	    { title: 'Recovered Context (Post-Compression)', content: wrappedPayload },
   104	    {
   105	      title: 'Recovery Instructions',
   106	      content: 'Context was compressed and auto-recovered. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
   107	    },
   108	  ];
   109	
   110	  if (state?.lastSpecFolder) {
   111	    sections.push({
   112	      title: 'Active Spec Folder',
   113	      content: `Last active: ${state.lastSpecFolder}`,
   114	    });
   115	  }
   175	      content: startupBrief?.startupSurface ?? [
   176	        'Session context received. Current state:',
   177	        '',
   178	        '- Memory: startup summary unavailable',
   179	        '- Code Graph: unavailable',
   180	        '- CocoIndex: unknown',
   181	        '',
   182	        'What would you like to work on?',
   183	      ].join('\n'),
   184	    },
   185	    {
   186	      title: 'Recovery Tools',
   187	      content: [
   188	        '- `memory_context({ input, mode })` - unified context retrieval',
   189	        '- `memory_match_triggers({ prompt })` - fast trigger matching',
   190	        '- `memory_search({ query })` - semantic search',
   191	        '- `code_graph_scan`, `code_graph_query`, `code_graph_context`, `code_graph_status`',
   192	      ].join('\n'),
   193	    },
   194	  ];
   195	  if (startupBrief?.graphOutline) {
   196	    sections.push({
   197	      title: 'Structural Context',
   198	      content: startupBrief.graphOutline,
   199	    });
   200	  } else if (startupBrief?.graphState === 'empty') {
   201	    sections.push({
   202	      title: 'Structural Context',
   203	      content: 'Code graph index is empty. Run `code_graph_scan` to build structural context.',
   204	    });
   205	  }
   206	
   207	  if (startupBrief?.sharedPayloadTransport) {
   208	    sections.push({
   209	      title: 'Startup Payload Contract',
   210	      content: startupBrief.sharedPayloadTransport,
   211	    });
   212	  }
   213	
   214	  if (startupBrief?.sessionContinuity) {
   215	    sections.push({
   216	      title: 'Session Continuity',
   217	      content: startupBrief.sessionContinuity,
   218	    });
   219	  }
   220	
   221	  if (startupBrief?.graphState === 'stale') {
   222	    sections.push({
   223	      title: 'Stale Code Graph Warning',
   224	      content: 'Code graph freshness is stale. The first structural read may refresh inline when safe; run `code_graph_scan` for broader stale states.',
   225	    });
   226	  }
   227	
   228	  return sections;
   229	}
   230	
   231	/** Handle source=resume: load resume context */
   232	function handleResume(sessionId: string): OutputSection[] {
   233	  const stateResult = loadState(sessionId);
   234	  const state = stateResult.ok ? stateResult.state : null;
   235	
   236	  if (state?.lastSpecFolder) {
   237	    return [{
   238	      title: 'Session Continuity',
   239	      content: `Last active spec folder: ${state.lastSpecFolder}\nCall \`memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })\` for full context.`,
   240	    }];
   241	  }
   242	
   243	  return [{
   244	    title: 'Session Resume',
   245	    content: 'Call `memory_context({ input: "resume previous work", mode: "resume", profile: "resume" })` to restore session state.',
   246	  }];
   247	}
   248	
   249	/** Handle source=clear: minimal output */
   250	function handleClear(): OutputSection[] {
   251	  return [{
   252	    title: 'Fresh Context',
   253	    content: 'Session cleared. Spec Kit Memory is active. Use `memory_context` or `memory_match_triggers` to load relevant context.',
   254	  }];
   255	}

exec
/bin/zsh -lc "rg -n \"function .*Prime|export function|async function|const .*=>\" .opencode/skills/system-spec-kit/mcp_server/hooks/memory-surface.ts | sed -n '1,120p'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
132:function isSessionPrimed(sessionId: string): boolean {
137:function markSessionPrimed(sessionId: string): void {
162:    const strings = args.concepts.filter((c): c is string => typeof c === 'string');
173:async function getConstitutionalMemories(): Promise<ConstitutionalMemory[]> {
259:  const measureTokens = (candidate: AutoSurfaceResult): number =>
365:async function autoSurfaceMemories(
420:function buildPrimePackage(
489:async function primeSessionIfNeeded(
563:function resetSessionPrimed(sessionId?: string): void {
594:async function autoSurfaceAtToolDispatch(
640:async function autoSurfaceAtCompaction(

exec
/bin/zsh -lc 'rg -n "function |export function|const .*=>" .opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts .opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts .opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts' in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:50:async function parseCopilotStdin(): Promise<CopilotHookInput | null> {
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:67:function readSessionId(input: CopilotHookInput | null): string | null {
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:80:function readRequestedSpecFolder(input: CopilotHookInput | null): string | undefined {
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:96:function fallbackBanner(memoryLine = 'startup summary unavailable'): string {
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:108:function readCompactPrimeIdentity(sessionId: string): HookStateCompactPrimeIdentity | null {
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:119:export function handleCompact(sessionId: string): string {
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:172:function buildStartupBanner(input: CopilotHookInput | null): string {
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:209:async function refreshStartupInstructions(startupSurface: string): Promise<void> {
.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:217:async function main(): Promise<void> {
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:54:function handleCompact(sessionId: string): OutputSection[] {
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:118:function readCompactPrimeIdentity(sessionId: string): { cachedAt: string; opaqueId?: string | null } | null {
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:137:function describeMemoryStatus(
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:163:function buildFallbackStartupSurface(
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:178:function rewriteStartupMemoryLine(
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:190:export function handleStartup(
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:298:function handleResume(sessionId: string): OutputSection[] {
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:319:function handleClear(): OutputSection[] {
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:328:function writeHookOutput(output: string): Promise<void> {
.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:341:async function main(): Promise<void> {
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:58:export function handleCompact(sessionId: string): OutputSection[] {
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:120:function readCompactPrimeIdentity(sessionId: string): { cachedAt: string; opaqueId?: string | null } | null {
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:131:function readRequestedSpecFolder(
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:150:function handleStartup(input: { sessionId?: string; cwd?: unknown; specFolder?: unknown } = {}): OutputSection[] {
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:232:function handleResume(sessionId: string): OutputSection[] {
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:250:function handleClear(): OutputSection[] {
.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:257:async function main(): Promise<void> {

exec
/bin/zsh -lc "nl -ba .opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts | sed -n '110,175p'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
   110	  if (!pendingCompactPrime) {
   111	    return null;
   112	  }
   113	  return {
   114	    cachedAt: pendingCompactPrime.cachedAt,
   115	    opaqueId: pendingCompactPrime.opaqueId ?? null,
   116	  };
   117	}
   118	
   119	export function handleCompact(sessionId: string): string {
   120	  const stateResult = loadState(sessionId);
   121	  const state = stateResult.ok ? stateResult.state : null;
   122	  const pendingCompactPrime = readCompactPrime(sessionId);
   123	  if (!pendingCompactPrime) {
   124	    return [
   125	      'Context Recovery',
   126	      'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
   127	    ].join('\n\n');
   128	  }
   129	
   130	  const { payload, cachedAt } = pendingCompactPrime;
   131	  const cachedAtMs = new Date(cachedAt).getTime();
   132	  const cacheAgeMs = Date.now() - cachedAtMs;
   133	  if (Number.isNaN(cachedAtMs) || cacheAgeMs >= CACHE_TTL_MS) {
   134	    return [
   135	      'Context Recovery',
   136	      'Context was compacted. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
   137	    ].join('\n\n');
   138	  }
   139	  const semanticValidation = validatePendingCompactPrimeSemantics(pendingCompactPrime);
   140	  if (!semanticValidation.ok) {
   141	    clearCompactPrime(sessionId, {
   142	      cachedAt: pendingCompactPrime.cachedAt,
   143	      opaqueId: pendingCompactPrime.opaqueId ?? null,
   144	    });
   145	    return [
   146	      'Context Recovery',
   147	      'Context was compacted, but the cached compact brief was quarantined by semantic validation. Call `memory_context({ mode: "resume", profile: "resume" })` to recover session state.',
   148	    ].join('\n\n');
   149	  }
   150	
   151	  const wrappedPayload = wrapRecoveredCompactPayload(payload, cachedAt, {
   152	    producer: pendingCompactPrime.payloadContract?.provenance.producer,
   153	    trustState: pendingCompactPrime.payloadContract?.provenance.trustState,
   154	    sourceSurface: pendingCompactPrime.payloadContract?.provenance.sourceSurface,
   155	    sanitizerVersion: pendingCompactPrime.payloadContract?.provenance.sanitizerVersion,
   156	    runtimeFingerprint: pendingCompactPrime.payloadContract?.provenance.runtimeFingerprint,
   157	  });
   158	
   159	  const sections = [
   160	    'Recovered Context (Post-Compression)',
   161	    wrappedPayload,
   162	    '',
   163	    'Recovery Instructions',
   164	    'Context was compacted and auto-recovered from the cached compact brief. For full session state, call `memory_context({ mode: "resume", profile: "resume" })`.',
   165	  ];
   166	  if (state?.lastSpecFolder) {
   167	    sections.push('', 'Active Spec Folder', `Last active: ${state.lastSpecFolder}`);
   168	  }
   169	  return sections.join('\n');
   170	}
   171	
   172	function buildStartupBanner(input: CopilotHookInput | null): string {
   173	  let startupBrief: StartupBrief | null = null;
   174	  try {
   175	    const sessionId = readSessionId(input);

exec
/bin/zsh -lc "nl -ba .opencode/skills/system-spec-kit/mcp_server/hooks/copilot/custom-instructions.ts | sed -n '1,55p'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
     1	// ───────────────────────────────────────────────────────────────
     2	// MODULE: Copilot Custom Instructions Writer
     3	// ───────────────────────────────────────────────────────────────
     4	// GitHub Copilot CLI customer hook outputs are ignored for prompt
     5	// mutation, so Spec Kit refreshes a managed block in Copilot's local
     6	// custom-instructions file instead.
     7	
     8	import { mkdir, readFile, writeFile } from 'node:fs/promises';
     9	import { homedir } from 'node:os';
    10	import { dirname, join } from 'node:path';
    11	
    12	export const SPEC_KIT_COPILOT_CONTEXT_BEGIN = '<!-- SPEC-KIT-COPILOT-CONTEXT:BEGIN -->';
    13	export const SPEC_KIT_COPILOT_CONTEXT_END = '<!-- SPEC-KIT-COPILOT-CONTEXT:END -->';
    14	
    15	export interface CopilotCustomInstructionsContext {
    16	  readonly startupSurface?: string | null;
    17	  readonly advisorBrief?: string | null;
    18	  readonly generatedAt?: string;
    19	  readonly source?: string;
    20	}
    21	
    22	export interface CopilotCustomInstructionsWriteOptions {
    23	  readonly instructionsPath?: string;
    24	  readonly env?: NodeJS.ProcessEnv;
    25	}
    26	
    27	export interface CopilotCustomInstructionsWriteResult {
    28	  readonly path: string;
    29	  readonly written: boolean;
    30	  readonly changed: boolean;
    31	  readonly errorMessage?: string;
    32	}
    33	
    34	const DEFAULT_SOURCE = 'system-spec-kit copilot custom-instructions writer';
    35	const STARTUP_FALLBACK = 'Startup context unavailable. Call `session_bootstrap()` or `memory_context({ mode: "resume", profile: "resume" })` if more context is needed.';
    36	const ADVISOR_FALLBACK = 'No live advisor brief is available for the latest prompt. Use Gate 2 or `skill_advisor.py` if routing is unclear.';
    37	
    38	function trimManagedText(value: string | null | undefined, fallback: string): string {
    39	  const trimmed = typeof value === 'string' ? value.trim() : '';
    40	  if (trimmed.length === 0) {
    41	    return fallback;
    42	  }
    43	  return trimmed
    44	    .replaceAll(SPEC_KIT_COPILOT_CONTEXT_BEGIN, '[managed block marker removed]')
    45	    .replaceAll(SPEC_KIT_COPILOT_CONTEXT_END, '[managed block marker removed]');
    46	}
    47	
    48	export function resolveCopilotCustomInstructionsPath(
    49	  options: CopilotCustomInstructionsWriteOptions = {},
    50	): string {
    51	  if (options.instructionsPath) {
    52	    return options.instructionsPath;
    53	  }
    54	  const env = options.env ?? process.env;
    55	  if (env.SPECKIT_COPILOT_INSTRUCTIONS_PATH) {

exec
/bin/zsh -lc "nl -ba .opencode/skills/system-spec-kit/mcp_server/lib/enrichment/passive-enrichment.ts | sed -n '110,140p'" in /Users/michelkerkmeester/MEGA/Development/Code_Environment/Public
 succeeded in 0ms:
   110	      return estimateTokenCount(trimmed) <= tokenBudget ? [trimmed] : [];
   111	    }
   112	    return [hint];
   113	  } catch {
   114	    // Code graph not available — non-fatal
   115	    return [];
   116	  }
   117	}
   118	
   119	/**
   120	 * Enrich with session continuity warning if quality is degraded.
   121	 * Dynamically imports context-metrics to avoid circular deps.
   122	 */
   123	async function enrichWithSessionWarning(): Promise<string[]> {
   124	  try {
   125	    const { computeQualityScore } = await import('../session/context-metrics.js');
   126	    const quality = computeQualityScore();
   127	
   128	    if (quality.level === 'critical') {
   129	      return ['[session] Context quality is CRITICAL. Consider running `memory_context({ mode: "resume" })` or `session_health` to diagnose.'];
   130	    }
   131	    if (quality.level === 'degraded') {
   132	      return ['[session] Context quality is degraded. Session may benefit from a `session_resume` call.'];
   133	    }
   134	    return [];
   135	  } catch {
   136	    return [];
   137	  }
   138	}
   139	
   140	/* ───────────────────────────────────────────────────────────────

mcp: spec_kit_memory/code_graph_query started
mcp: spec_kit_memory/code_graph_query (failed)
user cancelled MCP tool call
codex
I found only one true code caller of the `memory_context` handler; most other hits are runtime surfaces that *tell the client* to call `memory_context`.

Actual caller:

- `handleTool` in [context-tools.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/tools/context-tools.ts:14) calls `handleMemoryContext(...)` for `case 'memory_context'` at line 16.

Related runtime functions that reference or recommend `memory_context`:

- anonymous `CallToolRequestSchema` handler in [context-server.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/context-server.ts:920), with `memory_context` branches at lines 943, 973, and 1041.
- `buildServerInstructions` in [context-server.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/context-server.ts:783), recommending `memory_context` at line 818.
- `buildPrimePackage` in [memory-surface.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/memory-surface.ts:420), adding the resume `memory_context(...)` recommendation at line 460.
- `defaultResumeSections` in [session-start.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/codex/session-start.ts:88), emitting `memory_context(...)` guidance at lines 95 and 101.
- `handleCompact` in [claude/session-prime.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:54), emitting resume guidance at lines 62, 73, 85, and 103.
- `handleResume` in [claude/session-prime.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:298), emitting resume guidance at lines 306 and 311.
- `handleCompact` in [gemini/session-prime.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:58), emitting resume guidance at lines 66, 77, 89, and 106.
- `handleResume` in [gemini/session-prime.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:232), emitting resume guidance at lines 239 and 245.
- `handleCompact` in [copilot/session-prime.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:119), emitting resume guidance at lines 126, 136, 147, and 164.
hook: Stop
hook: Stop Completed
2026-04-27T14:39:35.432028Z ERROR codex_core::session: failed to record rollout items: thread 019dcf60-77c9-7903-b896-3c55a6e3ca22 not found
tokens used
236,216
I found only one true code caller of the `memory_context` handler; most other hits are runtime surfaces that *tell the client* to call `memory_context`.

Actual caller:

- `handleTool` in [context-tools.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/tools/context-tools.ts:14) calls `handleMemoryContext(...)` for `case 'memory_context'` at line 16.

Related runtime functions that reference or recommend `memory_context`:

- anonymous `CallToolRequestSchema` handler in [context-server.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/context-server.ts:920), with `memory_context` branches at lines 943, 973, and 1041.
- `buildServerInstructions` in [context-server.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/context-server.ts:783), recommending `memory_context` at line 818.
- `buildPrimePackage` in [memory-surface.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/memory-surface.ts:420), adding the resume `memory_context(...)` recommendation at line 460.
- `defaultResumeSections` in [session-start.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/codex/session-start.ts:88), emitting `memory_context(...)` guidance at lines 95 and 101.
- `handleCompact` in [claude/session-prime.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:54), emitting resume guidance at lines 62, 73, 85, and 103.
- `handleResume` in [claude/session-prime.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/claude/session-prime.ts:298), emitting resume guidance at lines 306 and 311.
- `handleCompact` in [gemini/session-prime.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:58), emitting resume guidance at lines 66, 77, 89, and 106.
- `handleResume` in [gemini/session-prime.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/gemini/session-prime.ts:232), emitting resume guidance at lines 239 and 245.
- `handleCompact` in [copilot/session-prime.ts](/Users/michelkerkmeester/MEGA/Development/Code_Environment/Public/.opencode/skills/system-spec-kit/mcp_server/hooks/copilot/session-prime.ts:119), emitting resume guidance at lines 126, 136, 147, and 164.
