goosedump 0.6.0

Coding agent context data browser
# Data-driven goosedump cases. One case per line, fields joined by " | ".
#
#   name=  test label
#   args=  goosedump arguments (quote a token to keep embedded spaces)
#   cwd    run in the fixture root (needed for crush config discovery)
#   status exit code: 0 (default), !0 (any failure), or an exact integer
#   out=   substring that must appear in stdout (repeatable)
#   out!=  substring that must not appear in stdout (repeatable)
#
# The fixture tree (tests/data.rs) stages one store per provider, so every
# case shares the same data. Blank lines and lines starting with # are ignored.

# opencode
name=opencode: list contexts | args=list opencode:* | out=opencode:sesh-alpha | out=opencode:sesh-bravo
name=opencode: display messages | args=show opencode:sesh-alpha | out="id": "entry-alpha" | out="role": "user" | out=STARTREK-DISCO | out="id": "entry-bravo" | out="role": "assistant"
name=opencode: IR assistant parts | args=show opencode:sesh-alpha | out="reasoning" | out=need to read a file | out="text" | out=found STARTREK-DISCO in source | out="type": "tool" | out="name": "read" | out="filePath": "src/main.rs"
name=opencode: grep literal match | args=grep opencode:sesh-alpha STARTREK-DISCO | out=STARTREK-DISCO
name=opencode: grep glob match | args=grep opencode:sesh-alpha START*DISCO | out=STARTREK-DISCO
name=opencode: grep no match | args=grep opencode:sesh-alpha NONEXISTENT-ZZ | out="messages": []
name=opencode: ranked search | args=search opencode:sesh-alpha STARTREK-DISCO | out=STARTREK-DISCO
name=opencode: ID filter | args=show opencode:sesh-alpha --ids entry-alpha | out="id": "entry-alpha"
name=opencode: ID filter excludes other | args=show opencode:sesh-alpha --ids entry-alpha | out!=entry-bravo
name=opencode: lineage scope | args=show opencode:sesh-alpha --scope lineage | out="id": "entry-alpha" | out="id": "entry-bravo"

# crush
name=crush: list contexts | cwd=yes | args=list crush:* | out=crush:sesh-crush
name=crush: display messages | cwd=yes | args=show crush:sesh-crush | out=ZULU-NOVEMBER | out=code pattern
name=crush: IR tool result | cwd=yes | args=show crush:sesh-crush | out="toolCall" | out="name": "grep" | out="filePath": "lib.rs" | out="toolResponse" | out=lib.rs:9: ZULU-NOVEMBER

# pi
name=pi: list contexts | args=list pi:* | out=pi:sesh-pi
name=pi: display messages | args=show pi:sesh-pi | out="id":"pi-entry-1" | out=TRIPLA-ESPRESSO | out="id":"pi-entry-2" | out="id":"pi-entry-3" | out=bashExecution | out=grep TRIPLA src/*.rs
name=pi: filtered grep no match | args=grep pi:sesh-pi found --ids pi-entry-1 | out!="type":"message"
name=pi: unfiltered grep match | args=grep pi:sesh-pi found | out=found TRIPLA-ESPRESSO in file
name=pi: compact compaction context | args=compact pi:sesh-pi | out="goals" | out=find TRIPLA-ESPRESSO (#pi-entry-1) | out=[user] | out=[assistant] | out=* bash  | out=$ grep TRIPLA src/*.rs
name=pi: compact from entry | args=compact pi:sesh-pi --from pi-entry-2 | out="goals" | out=Ongoing development work | out=[assistant]
name=pi: compact from excludes earlier entry | args=compact pi:sesh-pi --from pi-entry-2 | out!=find TRIPLA-ESPRESSO
name=pi: compact until excludes later entry | args=compact pi:sesh-pi --from pi-entry-2 --until pi-entry-3 | out!=Recent check passed
name=pi: compact invalid range | args=compact pi:sesh-pi --from pi-entry-4 --until pi-entry-2 | status=!0
name=pi: compact from with ids | args=compact pi:sesh-pi --from pi-entry-2 --ids pi-entry-2 | status=!0
name=pi: compact filters todo noise | args=compact pi:sesh-pi | out!=Created #99
name=pi: compact filters todo tool call | args=compact pi:sesh-pi | out!=* todo
name=pi: compact skips resolved failure | args=compact pi:sesh-pi | out="outstanding": []
name=pi: compact merges prior durable section | args=compact pi:sesh-pi-merge | out=Always run clippy (#prior-pref)
name=pi: compact skips prior transcript | args=compact pi:sesh-pi-merge | out!=old transcript line
name=pi: compact filters hashline noise | args=compact pi:sesh-pi | out!=1:928|//
name=pi: compact filters file-list noise | args=compact pi:sesh-pi | out!=.git/
name=pi: compact keeps brief opening and recent tail | args=compact pi:sesh-pi-long | out=OPENING-ASSISTANT-MARKER | out=earlier lines omitted | out=TAIL-RECENT-MARKER

# codex
name=codex: list contexts | args=list codex:* | out=codex:019eb466-8e72-7dd0-8a10-9c8963f7d86c
name=codex: display messages | args=show codex:019eb466-8e72-7dd0-8a10-9c8963f7d86c | out="id":"codex-user-1" | out=DEADBEEF | out="id":"codex-assistant-1" | out="id":"call-codex-grep" | out="path":"src/main.rs" | out="id":"codex-reasoning-1" | out=consider DEADBEEF search plan | out="id":"call-codex-custom" | out="query":"DEADBEEF custom" | out="id":"call-codex-shell" | out="command":"grep DEADBEEF src/main.rs" | out="id":"call-codex-grep-output"
name=codex: grep match | args=grep codex:019eb466-8e72-7dd0-8a10-9c8963f7d86c DEADBEEF | out=DEADBEEF
name=codex: grep command match | args=grep codex:019eb466-8e72-7dd0-8a10-9c8963f7d86c "grep DEADBEEF src/main.rs" | out=grep DEADBEEF src/main.rs

# goose
name=goose: list contexts | args=list goose:* | out=goose:sesh-goose
name=goose: display messages | args=show goose:sesh-goose | out=YANKEE-ECHO | out=let me search | out="pattern": "YANKEE" | out="toolResponse"
name=goose: IR assistant and tool result | args=show goose:sesh-goose | out="thinking" | out=searching for YANKEE-ECHO | out="toolCall" | out="pattern": "YANKEE" | out="toolResponse"
name=goose: grep match | args=grep goose:sesh-goose YANKEE-ECHO | out=YANKEE-ECHO
name=goose: lineage scope | args=show goose:sesh-goose --scope lineage | out=find YANKEE-ECHO | out="toolResponse"

# claude
name=claude: list contexts | args=list claude:* | out=claude:sesh-claude
name=claude: display messages | args=show claude:sesh-claude | out="uuid":"claude-user-1" | out=SLOP-STARS | out="uuid":"claude-asst-1" | out="uuid":"claude-tool-1" | out="tool_use_id":"Bash" | out=src/main.rs:7: SLOP-STARS
name=claude: IR assistant parts | args=show claude:sesh-claude | out="thinking" | out=looking for SLOP-STARS | out="text" | out=I found SLOP-STARS in source | out="type":"tool_use" | out="command":"grep SLOP src/*.rs"
name=claude: tool result error marker | args=show claude:sesh-claude | out="uuid":"claude-tool-2" | out="tool_use_id":"Read" | out="is_error":true | out=file not found
name=claude: grep literal match | args=grep claude:sesh-claude SLOP-STARS | out=SLOP-STARS
name=claude: grep glob match | args=grep claude:sesh-claude SLOP*STARS | out=SLOP-STARS
name=claude: ranked search | args=search claude:sesh-claude SLOP | out=SLOP
name=claude: prefix id resolution | args=show claude:sesh-cl | out="uuid":"claude-user-1"
name=claude: lineage scope | args=show claude:sesh-claude --scope lineage | out="uuid":"claude-user-1" | out="uuid":"claude-tool-2"

# gemini
name=gemini: list contexts | args=list gemini:* | out=gemini:session-gemini-1
name=gemini: display messages | args=show gemini:session-gemini-1 | out="id": "gem-user-1" | out=find SLOP-STARS | out="id": "gem-asst-1" | out="id": "gem-asst-1-tool-0" | out=grep_search | out=src/main.rs:7: SLOP-STARS
name=gemini: IR assistant parts | args=show gemini:session-gemini-1 | out="thoughts" | out=looking for SLOP-STARS | out="content" | out=I found SLOP-STARS in source | out="toolCalls" | out="pattern": "SLOP"
name=gemini: tool result error marker | args=show gemini:session-gemini-1 | out="id": "gem-asst-1-tool-1" | out=read_file | out=(error) | out=file not found
name=gemini: grep glob match | args=grep gemini:session-gemini-1 SLOP*STARS | out=SLOP-STARS
name=gemini: ranked search | args=search gemini:session-gemini-1 SLOP | out=SLOP
name=gemini: prefix id resolution | args=show gemini:session-gem | out="id": "gem-user-1"

# list aggregation and globbing
name=list: aggregates all providers with tags | args=list | out=opencode:sesh-alpha | out=goose:sesh-goose | out=pi:sesh-pi
name=list: glob scopes to one provider | args=list goose:* | out=goose:sesh-goose
name=list: glob excludes other providers | args=list goose:* | out!=opencode:sesh-alpha
name=list: glob matches id suffix across providers | args=list *sesh-alpha | out=opencode:sesh-alpha
name=list: bare token searched anywhere in tag | args=list goose | out=goose:sesh-goose
name=list: id fragment matched without provider | args=list sesh-cl | out=claude:sesh-claude

# cli errors
name=cli: unknown provider | args=show bogus:abc | status=!0
name=cli: target without provider | args=show sesh-alpha | status=!0
name=cli: no arguments | args= | status=2 | out=Usage: goosedump <command> [<args>]
name=cli: grep without context-id | args=grep opencode:foo | status=!0
name=cli: missing subcommand | args=opencode sesh-alpha | status=!0
name=cli: --page with grep | args=grep opencode:sesh-alpha STARTREK --page 1 | status=!0
name=cli: invalid --scope | args=show opencode:sesh-alpha --scope bogus | status=!0
name=cli: --page zero | args=search opencode:sesh-alpha STARTREK --page 0 | status=!0