vshulcz/deja-vu

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Works · Linux / Luna: Works

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/vshulcz--deja-vu.svg).

mcp-server

Works

README claims checked out on 2 recorded setups. Combinations not listed here were not tested.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
Linuxyesyes

Linux / Haiku 5.5: yes · Oct 23, 2026 · db6bb255d9ca · claude-code / 2.1.300 (Claude Code)
Recorded operation: <guest-path> mcp · local stdio MCP start + initialize + tools/list

Linux / Luna: yes · Oct 23, 2026 · db6bb255d9ca · codex / codex-cli 0.163.0
Recorded operation: <guest-path> frobnicator

Does what it says
1 of 1 claims checked out
  • Search every history: Real input produced the expected result: Resolved frobnicator timeout by raising connection pool limit

    Source: Search every history.

    Input: frobnicator

    Expected: Resolved frobnicator timeout by raising connection pool limit

    Command: <guest-path> frobnicator

    Observed: Resolved frobnicator timeout by raising connection pool limit

MCP
Documented only
Local or hosted
local
Local: runs on your machine
Needs keys or browser
None seen
Maintained
Maintained
actively maintained: last commit 0 days ago; 2154 commits and 2611 merged PRs in 90 days; 24 open issues, 2 open PRs; latest release 2026-10-21

Last commit Oct 23, 2026

Setup time
32 s
32 s to a working result
Issue
none found in recorded check
Examples
1 of 1 ran as expected
  • Install deja and search indexed history: command completed successfully

    Source: README.md / Install and CLI

    Input: query frobnicator over local indexed session

    Expected: prints matching session and message

    Command: <guest-path> frobnicator

    Observed: [claude] demo · - · session — 1 match Resolved frobnicator timeout by raising connection pool limit

Evidence
README behavior checked
Agent interfaces
CLI, MCP (documented only)
CLI, MCP (documented only)

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

Tested with
Codex / Luna
  • Linux: Codex / Luna · agent codex-cli 0.163.0 · Checked operation passed · Oct 23, 2026 on db6bb255d9ca

Each entry describes its recorded operation and source revision. Other agent clients were not tested.

Safety
Made outbound HTTPS connections: yes (hosts not recorded) by <guest-path>

Review signals across current setups: connection review. 12 listed items (named-host connections, static matches, dependency advisories) are below and do not change this verdict. 74 static matches retained as context.

Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 6 distinct locations. 5 attributed processes.

Source contains download and execute; review its purpose. 5 distinct locations. 5 findings.

Gitleaks found a possible hardcoded secret; value withheld. internal/redact/redact.go

Full event, path and process lists for each observed setup:

Run details

Haiku 5.5

Native agent · Checked operation passed

Checked operation <guest-path> mcp · local stdio MCP start + initialize + tools/list

Agent-reported scope: Install deja via the README installer, then search agent history: deja recall through the MCP stdio server and the deja CLI query, plus a manual deja index cycle

MCP server returned: deja · version 0.23.0.

MCP tools returned: deja. Tool listing does not establish authenticated tool-call success.

Run details
run
vshulcz--deja-vu-claude-haiku-5-5-1792771741927872571
date
Oct 23, 2026
time to working
1097.3s
product hosting / execution
Local stdio MCP server in the guest
recorded operation scope
product operation
model
claude-haiku-5-5
agent / version
claude-code / 2.1.300 (Claude Code)
platform
linux
reported cost
$0.028514
Recorded source
https://github.com/vshulcz/deja-vu
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "db6bb255d9ca269197e0929939348f18b37f2523", "url": "https://github.com/vshulcz/deja-vu"}
Test version
readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9
revision
db6bb255d9ca269197e0929939348f18b37f2523
Whose fault: not assigned · resolved

Safety: Review signals: 5 download and execute, 1 hardcoded secret. 37 static matches retained as context.

Review signals: 5 download and execute, 1 hardcoded secret. 37 static matches retained as context.

Source contains download and execute; review its purpose. 5 distinct locations. 5 findings.

Gitleaks found a possible hardcoded secret; value withheld. internal/redact/redact.go

36 hardcoded secret matches retained as context; full list in the evidence.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • The MCP server exposes a deja tool that recalls past sessions by mode: Real input produced the expected result: The frobnicator bug is in parser.go

    Source: The server exposes one tool, `deja`, with a `mode`; `deja install` wires it in.

    Input: {"tool": "deja", "arguments": {"mode": "recall", "q": "frobnicator"}}

    Expected: recall returns the frobnicator session from the synthetic fixture

    Command: <guest-path> mcp tools/call {"tool": "deja", "arguments": {"mode": "recall", "q": "frobnicator"}}

    Observed: The frobnicator bug is in parser.go\n- → The frobnicator bug is in parser.go\n\n</deja-recall>", "type": "text"}]}

  • deja with a query searches every history: Real input produced the expected result: The frobnicator bug is in parser.go

    Source: Search every history.

    Input: frobnicator

    Expected: prints the matching synthetic sessions

    Command: <guest-path> frobnicator

    Observed: The frobnicator bug is in parser.go

Examples

  • demo query over the synthetic fixtures (Makefile demo target, go run replaced by the installed binary): command completed successfully

    Source: Makefile demo target

    Input: --rebuild frobnicator

    Expected: claude, codex and opencode fixture sessions are indexed and the frobnicator matches print

    Command: <guest-path> --rebuild frobnicator

    Observed: [claude] project · Jan 2 · claude-abc — 2 matches reused 7× by agents recently Find frobnicator bug The frobnicator bug is in parser.go deja: indexing sessions into ~/demo/idx ... deja: claude: 1 session, 2 messages deja: codex: 2 sessions, 3 messages deja: opencode: 1 session, 2 messages

  • repository test suite (make test = go test ./...): Ran go test ./... with Go 1.25.3 installed from go.dev tarball: 25+ packages ok; cmd/deja FAILED after the default 600s go test timeout (FAIL github.com/vshulcz/deja-vu/cmd/deja 600.126s) on this slow-fsync VM. Full run takes over 15 minutes, too long to replay here.

    Source: README.md ## Contributing: make build test lint

    Expected: documented command completes successfully

    Observed: Ran go test ./... with Go 1.25.3 installed from go.dev tarball: 25+ packages ok; cmd/deja FAILED after the default 600s go test timeout (FAIL github.com/vshulcz/deja-vu/cmd/deja 600.126s) on this slow-fsync VM. Full run takes over 15 minutes, too long to replay here.

Cycles

  • deja index re-reads new agent history so later searches find it: Triggered one cycle by hand (run-once: a wrapper-free manual run of deja index against a copy of the fixture root with one extra transcript (zanzibarquirk) added; the copy is at <guest-path>; normal trigger: cron or systemd timer runs deja index (no product-internal scheduler in the repo; auto-index is triggered by search freshness checks)): deja: finding transcripts deja: 1 transcript outside the stores this run reads — still searchable deja: updated 2 files (2 new messages) deja: 1 session shares an id with another transcript — each pair is filed under one project, the one whose file sorts first

    Source: README.md

    Input: DEJA_CLAUDE_ROOT=<guest-path>, a new session file containing zanzibarquirk

    Expected: index reports the transcript update and the new term becomes searchable

    Command: <guest-path> index

    Observed: deja: finding transcripts deja: 1 transcript outside the stores this run reads — still searchable deja: updated 2 files (2 new messages) deja: 1 session shares an id with another transcript — each pair is filed under one project, the one whose file sorts first

Local or hosted: local

What the agent did

Install deja via the README installer, then search agent history: deja recall through the MCP stdio server and the deja CLI query, plus a manual deja index cycle

cd <guest-path> && pwd && ls -la && id -u && python3 --version && (git -C . rev-parse HEAD 2>&1 | head -1) && cat README.md 2>/dev/null | head -150
cd <guest-path> && sed -n 150,400p README.md | cut -c1-400; echo ---; which go curl sh npm node uv 2>&1; go version 2>&1; cat Makefile; cat .coldpass/* 2>/dev/null | head -20; ls -la .coldpass
cd <guest-path> && cat go.mod; echo ---; grep -n '^#' README.md; echo ---; grep -n -i 'go build\|go install\|from source\|make build\|go test\|go version' README.md | cut -c1-300; echo ---; cat install.sh | head -80
cd /tmp && curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh -o /tmp/deja-install.sh; echo "fetch rc=$?"; (curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh) 2>&1 | tail -30; echo "rc=${PIPESTATUS[0]}"; ls -la ~/.local/bin 2>&1
D=<guest-path>; $D --version 2>&1; echo ---; $D install --help 2>&1 | head -60; echo ---; grep -rn -i 'telemetry' <guest-path> | cut -c1-300
export DEJA_OFFLINE=1 DEJA_NO_UPDATE_NOTICE=1; export PATH=<guest-path>; timeout 600 deja install --auto 2>&1 | tail -40; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && sed -n 446,530p README.md | cut -c1-350; echo ----; sed -n 696,712p README.md | cut -c1-400; echo ---; ls fixtures fixtures/*; ls docs | head -50
cd <guest-path> && cat fixtures/synthetic/make_opencode_db.sh | head -40; echo ---; which sqlite3 || echo "no sqlite3"; ls fixtures/synthetic/claude fixtures/synthetic/codex | head; grep -rn 'frobnicator' fixtures/synthetic | head -5 | cut -c1-250
sudo -n true && echo sudo-ok; sudo -n apt-get update -qq 2>&1 | tail -3; sudo -n DEBIAN_FRONTEND=noninteractive apt-get install -y -qq sqlite3 2>&1 | tail -3; which sqlite3 && sqlite3 --version
set -x; export DEJA_OFFLINE=1 DEJA_NO_UPDATE_NOTICE=1; export PATH=<guest-path>; W=<guest-path>; mkdir -p <guest-path> && sh $W/fixtures/synthetic/make_opencode_db.sh <guest-path> && ls -la <guest-path>; DEJA_CLAUDE_ROOT=$W/fixtures/synthetic/claude DEJA_CODEX_ROOT=$W/fixtures/synthetic/codex DEJA_OPENCODE_DB=<guest-path> DEJA_INDEX_DIR=<guest-path> deja --rebuild frobnicator 2>&1; echo "rc=$?"
export DEJA_OFFLINE=1 DEJA_NO_UPDATE_NOTICE=1 W=<guest-path>; export DEJA_CLAUDE_ROOT=$W/fixtures/synthetic/claude DEJA_CODEX_ROOT=$W/fixtures/synthetic/codex DEJA_OPENCODE_DB=<guest-path> DEJA_INDEX_DIR=<guest-path>; printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"deja","arguments":{"mode":"recall","q":"frobnicator"}}}' | timeout 60 <guest-path> mcp 2><guest-path>; echo "rc=$?"; head -c 600 <guest-path>
cd <guest-path> && grep -n -i 'cron\|timer\|schedul\|--once\|--now\|every hour\|every day\|loop' README.md | cut -c1-250; echo ---; grep -rln -i 'sync-timer\|launchd\|systemd' internal cmd | head; echo ---; ls internal | head -40
cd <guest-path> && sed -n 555,575p README.md | cut -c1-400; echo ---; grep -n -i 'index' README.md | grep -i 'run\|`deja index`' | cut -c1-250 | head; echo; <guest-path> index --help 2>&1 | head -20
export DEJA_OFFLINE=1 DEJA_NO_UPDATE_NOTICE=1 W=<guest-path>; C=<guest-path>; rm -rf $C; mkdir -p $C && cp -r $W/fixtures/synthetic/claude/. $C/ && mkdir -p $C/project2 && printf '%s\n' '{"type":"user","sessionId":"claude-cycle-1","cwd":"/tmp/demo","timestamp":"2026-02-02T03:04:05Z","message":{"role":"user","content":"Why does the zanzibarquirk job hang?"}}' '{"type":"assistant","sessionId":"claude-cycle-1","cwd":"/tmp/demo","timestamp":"2026-02-02T03:04:06Z","message":{"role":"assistant","content":[{"type":"text","text":"The zanzibarquirk job hangs because the lock file is never released."}]}}' > $C/project2/session.jsonl; export DEJA_CLAUDE_ROOT=$C DEJA_CODEX_ROOT=$W/fixtures/synthetic/codex DEJA_OPENCODE_DB=<guest-path> DEJA_INDEX_DIR=<guest-path>; echo "== cycle: deja index"; <guest-path> index 2>&1; echo "rc=$?"; echo "== search new term"; <guest-path> zanzibarquirk 2>&1; echo "rc=$?"
cd /tmp && curl -fsSL -o <guest-path> https://go.dev/dl/go1.25.3.linux-amd64.tar.gz; echo "dl rc=$?"; ls -la <guest-path> 2>&1; if [ -s <guest-path> ]; then mkdir -p <guest-path> && tar -C <guest-path> -xzf <guest-path> && <guest-path> version; fi
export DEJA_OFFLINE=1 DEJA_NO_UPDATE_NOTICE=1 DEJA_CLAUDE_ROOT=<guest-path> DEJA_CODEX_ROOT=<guest-path> DEJA_OPENCODE_DB=<guest-path> DEJA_INDEX_DIR=<guest-path>; <guest-path> index 2>&1; echo "rc=$?"; echo ===; export PATH=<guest-path> GOCACHE=<guest-path> GOPATH=<guest-path> GOFLAGS=-mod=mod; cd <guest-path> && time (timeout 900 go test ./... 2>&1 | tail -40); echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && E='{"DEJA_OFFLINE":"1","DEJA_NO_UPDATE_NOTICE":"1","DEJA_CLAUDE_ROOT":"<guest-path>","DEJA_CODEX_ROOT":"<guest-path>","DEJA_OPENCODE_DB":"<guest-path>","DEJA_INDEX_DIR":"<guest-path>"}'
cat > probe.json <<EOF
{"kind":"mcp","argv":["<guest-path>","mcp"],"cwd":"<guest-path>","env":$E,"tool":"deja","arguments":{"mode":"recall","q":"frobnicator"},"expected_text":"The frobnicator bug is in parser.go"}
EOF
cat > claims.json <<EOF
[
{"kind":"claim","claim":"The MCP server exposes a deja tool that recalls past sessions by mode","source":"The server exposes one tool, \`deja\`, with a \`mode\`; \`deja install\` wires it in.","input":"mode=recall q=frobnicator","expected":"recall returns the frobnicator session from the synthetic fixture","probe_kind":"mcp","argv":["<guest-path>","mcp"],"tool":"deja","arguments":{"mode":"recall","q":"frobnicator"},"expected_text":"The frobnicator bug is in parser.go","cwd":"<guest-path>","env":$E},
{"kind":"claim","claim":"deja with a query searches every history","source":"Search every history.","input":"frobnicator","expected":"prints the matching synthetic sessions","probe_kind":"cli","argv":["<guest-path>","frobnicator"],"expected_text":"The frobnicator bug is in parser.go","cwd":"<guest-path>","env":$E}
]
EOF
cat > cycles.json <<EOF
{"detected":true,"checks":[{"claim":"deja index re-reads new agent history so later searches find it","source":"README.md","quote":"Run \`deja index\` from cron or a systemd timer.","schedule":"cron or systemd timer runs deja index (no product-internal scheduler in the repo; auto-index is triggered by search freshness checks)","method":"run-once: a wrapper-free manual run of deja index against a copy of the fixture root with one extra transcript (zanzibarquirk) added; the copy is at <guest-path>","input":"DEJA_CLAUDE_ROOT=<guest-path>, a new session file containing zanzibarquirk","expected":"index reports the transcript update and the new term becomes searchable","kind":"cli","argv":["<guest-path>","index"],"cwd":"<guest-path>","env":{"DEJA_OFFLINE":"1","DEJA_NO_UPDATE_NOTICE":"1","DEJA_CLAUDE_ROOT":"<guest-path>","DEJA_CODEX_ROOT":"<guest-path>","DEJA_OPENCODE_DB":"<guest-path>","DEJA_INDEX_DIR":"<guest-path>"},"expected_text":"deja: finding transcripts"}]}
EOF
cat > examples.json <<EOF
[
{"kind":"example","claim":"demo query over the synthetic fixtures (Makefile demo target, go run replaced by the installed binary)","source":"Makefile demo target","input":"--rebuild frobnicator","expected":"claude, codex and opencode fixture sessions are indexed and the frobnicator matches print","argv":["<guest-path>","--rebuild","frobnicator"],"cwd":"<guest-path>","env":$E,"expected_text":"The frobnicator bug is in parser.go"},
{"kind":"example","claim":"repository test suite (make test = go test ./...)","source":"README.md ## Contributing: make build test lint","reason":"Ran go test ./... with Go 1.25.3 installed from go.dev tarball: 25+ packages ok; cmd/deja FAILED after the default 600s go test timeout (FAIL github.com/vshulcz/deja-vu/cmd/deja 600.126s) on this slow-fsync VM. Full run takes over 15 minutes, too long to replay here."}
]
EOF
for f in probe.json claims.json cycles.json examples.json; do python3 -m json.tool $f >/dev/null && echo "$f ok"; done; ls -la
cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | tail -60; echo "rc=${PIPESTATUS[0]}"
pgrep -fa 'deja mcp|go test|deja index' || echo "no background processes"; cd <guest-path> && cat > report.json <<'EOF'
{"outcome":"working","fault_owner":"test","operation":"Install deja via the README installer, then search agent history: deja recall through the MCP stdio server and the deja CLI query, plus a manual deja index cycle","operation_scope":"Linux x86_64 guest; synthetic fixture history only (no real agent sessions existed on this VM); no network telemetry (DEJA_OFFLINE=1, DEJA_NO_UPDATE_NOTICE=1); Go 1.25.3 installed for the repo test suite; sqlite3 installed for the opencode fixture","steps":["curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh (installed deja v0.23.0 to <guest-path>)","deja install --auto (found no agent configs on this VM; nothing wired)","sudo apt-get install -y sqlite3 (needed by fixtures/synthetic/make_opencode_db.sh)","sh fixtures/synthetic/make_opencode_db.sh <guest-path>","deja --rebuild frobnicator with DEJA_CLAUDE_ROOT/DEJA_CODEX_ROOT/DEJA_OPENCODE_DB/DEJA_INDEX_DIR set (Makefile demo target)","deja mcp, tools/call deja {mode:recall, q:frobnicator} over stdio","deja frobnicator (README CLI query)","deja index after adding a transcript to a copy of the fixture root, then deja zanzibarquirk (README: Run `deja index` from cron or a systemd timer)","go test ./... with Go 1.25.3 (README make test)"],"deviations":["install.sh fetched the latest release v0.23.0, not a build of the pinned commit db6bb255d9ca269197e0929939348f18b37f2523; the workspace has no .git, so the snapshot could not be verified against the pin and no git fetch/reset was run","deja install --auto found no agent configs, so MCP was tested by calling deja mcp directly rather than through an installed agent","sqlite3 was missing and was installed with sudo apt-get","Makefile demo used the installed deja binary in place of go run cmd/deja","Go was missing; installed go1.25.3 from https://go.dev/dl/go1.25.3.linux-amd64.tar.gz into <guest-path>","go test ./... : every package listed passed except cmd/deja, which failed with the default 600s test timeout (FAIL github.com/vshulcz/deja-vu/cmd/deja 600.126s); full run exceeded the 15-minute tool limit, so the suite was not replayed","make build was not run, to avoid writing a binary into the workspace root","The manually created cycle transcript produced a harmless 'session shares an id' warning, because the copied fixture reuses ids"],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":"Re-run cmd/deja tests on a machine with faster disk or with go test -timeout 30m ./cmd/deja to see whether the failure is only the 10-minute default timeout; confirm the workspace matches the pinned commit before relying on this result"}
EOF
python3 -m json.tool report.json >/dev/null && echo report-ok; cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | python3 -c 'import sys,json; d=json.loads(sys.stdin.read()); print("valid",d["valid"],"problems",d["problems"],"replay",d["replay"]["status"])'
Earlier attempts (1)

Luna

Native agent · Checked operation passed

Checked operation <guest-path> frobnicator

Agent-reported scope: Installed deja from the repository installer, indexed a synthetic Claude session, and searched it with the documented CLI query.

Run details
run
vshulcz--deja-vu-gpt-6-luna-1792772964306980725
date
Oct 23, 2026
time to working
31.7s
product hosting / execution
Local command in the guest
recorded operation scope
product operation
model
gpt-6-luna
agent / version
codex / codex-cli 0.163.0
platform
linux
reported cost
not reported (not assumed free)
Recorded source
https://github.com/vshulcz/deja-vu
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "db6bb255d9ca269197e0929939348f18b37f2523", "url": "https://github.com/vshulcz/deja-vu"}
Test version
readme-f72312298d35d84837d4fc5f6f22b138d54d456600b5ed431e36e8f5db931dbf
revision
db6bb255d9ca269197e0929939348f18b37f2523
Whose fault: not assigned · resolved

Safety: Review signals: 1 connection review, 5 download and execute, 1 hardcoded secret. 37 static matches retained as context.

Review signals: 1 connection review, 5 download and execute, 1 hardcoded secret. 37 static matches retained as context.

Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 6 distinct locations. 5 attributed processes.

Source contains download and execute; review its purpose. 5 distinct locations. 5 findings.

Gitleaks found a possible hardcoded secret; value withheld. internal/redact/redact.go

36 hardcoded secret matches retained as context; full list in the evidence.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • Search every history: Real input produced the expected result: Resolved frobnicator timeout by raising connection pool limit

    Source: Search every history.

    Input: frobnicator

    Expected: Resolved frobnicator timeout by raising connection pool limit

    Command: <guest-path> frobnicator

    Observed: Resolved frobnicator timeout by raising connection pool limit

Examples

  • Install deja and search indexed history: command completed successfully

    Source: README.md / Install and CLI

    Input: query frobnicator over local indexed session

    Expected: prints matching session and message

    Command: <guest-path> frobnicator

    Observed: [claude] demo · - · session — 1 match Resolved frobnicator timeout by raising connection pool limit

Local or hosted: local

What the agent did

Installed deja from the repository installer, indexed a synthetic Claude session, and searched it with the documented CLI query.

cd <guest-path> && pwd && rg --files -g 'README*' -g 'AGENTS.md' -g 'pyproject.toml' -g 'package.json' -g 'Makefile' -g 'requirements*.txt' -g '.github/workflows/**' | head -80 && cat README.md && python3 --version && id -u
cd <guest-path> && find . -maxdepth 2 -type f | head -80 && ls -la && git rev-parse --is-inside-work-tree 2>/dev/null || true && command -v go && go version && command -v curl
cd <guest-path> && command -v go; go version; sed -n '1,160p' Makefile; sed -n '1,140p' install.sh; cat mcp.json; cat .coldpass/* 2>/dev/null
cd <guest-path> && DEJA_INSTALL_DIR=<guest-path> DEJA_INSTALL_TMPDIR=<guest-path> sh install.sh --yes && <guest-path> install --auto
cd <guest-path> && sed -n '1,160p' scripts/e2e.sh && find fixtures -maxdepth 3 -type f | head -40 && mkdir -p <guest-path><host-path> && printf '%s\n' '{"type":"user","message":{"content":"Resolved frobnicator timeout by raising connection pool limit"},"cwd":"<guest-path>"}' > <guest-path><host-path> && HOME=<guest-path> DEJA_CLAUDE_ROOT=<guest-path><host-path> DEJA_OFFLINE=1 DEJA_NO_UPDATE_NOTICE=1 <guest-path> index && HOME=<guest-path> DEJA_CLAUDE_ROOT=<guest-path><host-path> DEJA_OFFLINE=1 DEJA_NO_UPDATE_NOTICE=1 <guest-path> frobnicator
cd <guest-path> && mkdir -p .coldpass && python3 - <<'PY'
import json
p='<guest-path>'
probe={"kind":"cli","argv":["<guest-path>","frobnicator"],"cwd":"<guest-path>","env":{"HOME":"<guest-path>","DEJA_CLAUDE_ROOT":"<guest-path><host-path>","DEJA_OFFLINE":"1","DEJA_NO_UPDATE_NOTICE":"1"},"expected_text":"Resolved frobnicator timeout by raising connection pool limit"}
claim={"kind":"claim","claim":"Search every history","source":"Search every history.","input":"frobnicator","expected":"Resolved frobnicator timeout by raising connection pool limit","probe_kind":"cli","argv":probe['argv'],"expected_text":probe['expected_text'],"cwd":probe['cwd'],"env":probe['env']}
json.dump(probe,open(p+'/probe.json','w'),indent=2)
json.dump([claim],open(p+'/claims.json','w'),indent=2)
json.dump({"detected":False,"reason":"README and entry points inspected: this is an on-demand local history search/index CLI; no product scheduler or recurring cycle is provided.","checks":[]},open(p+'/cycles.json','w'),indent=2)
json.dump([{"kind":"example","claim":"README documented install and query workflow","source":"README.md / Install; CLI","reason":"The released install.sh and CLI were run; the query example requires indexed user history, so replay is represented by the synthetic local session in probe.json."}],open(p+'/examples.json','w'),indent=2)
PY
mkdir -p <guest-path>
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cd <guest-path> && python3 - <<'PY'
import json
p='.coldpass/examples.json'
json.dump([{"kind":"example","claim":"Install deja and search indexed history","source":"README.md / Install and CLI","input":"query frobnicator over local indexed session","expected":"prints matching session and message","argv":["<guest-path>","frobnicator"],"cwd":"<guest-path>","env":{"HOME":"<guest-path>","DEJA_CLAUDE_ROOT":"<guest-path><host-path>","DEJA_OFFLINE":"1","DEJA_NO_UPDATE_NOTICE":"1"},"expected_text":"Resolved frobnicator timeout by raising connection pool limit"}],open(p,'w'),indent=2)
PY
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cd <guest-path> && python3 - <<'PY'
import json
r={"outcome":"working","fault_owner":None,"operation":"Installed deja from the repository installer, indexed a synthetic Claude session, and searched it with the documented CLI query.","operation_scope":"Local CLI search with one indexed synthetic session; installer wired no agent because the VM had no agent configuration.","steps":["Ran the repository install.sh into <guest-path>; installed deja v0.23.0.","Ran <guest-path> install --auto.","Indexed one local synthetic session and queried it with deja frobnicator; matching text was returned.","Replayed probe, README claim, and example successfully with the checker."],"deviations":["The README's install pipeline is served via the repository's pinned snapshot installer instead of curl; DEJA_OFFLINE=1 and DEJA_NO_UPDATE_NOTICE=1 suppress update lookups during replay."],"stuck_step":None,"main_blocker":None,"plain_failure":None,"suggested_fix":None}
json.dump(r,open('.coldpass/report.json','w'),indent=2)
PY
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay && cat .coldpass/report.json