Skip to content

chore(recorders): consolidate per-cap record scripts to the generic recorder#496

Merged
blove merged 1 commit into
mainfrom
claude/recorder-consolidate
May 20, 2026
Merged

chore(recorders): consolidate per-cap record scripts to the generic recorder#496
blove merged 1 commit into
mainfrom
claude/recorder-consolidate

Conversation

@blove
Copy link
Copy Markdown
Contributor

@blove blove commented May 20, 2026

Summary

Deletes 5 per-cap record scripts (3 shell + 2 Python) in favor of the generic `scripts/record-aimock-cap.sh` shipped in PR #482. The generic recorder reads cap metadata from the capability registry and drives any normal LLM-call → tool_call → continuation flow.

Net: -683 LOC, +14 LOC (kept-script header comment).

Deleted (5)

  • `cockpit/chat/generative-ui/angular/e2e/scripts/record-c-generative-ui.sh` (170 LOC)
  • `cockpit/chat/a2ui/angular/e2e/scripts/record-c-a2ui.sh` (166 LOC)
  • `cockpit/chat/subagents/angular/e2e/scripts/record-c-subagents.sh` (194 LOC)
  • `cockpit/langgraph/streaming/angular/e2e/scripts/record-streaming.py` (58 LOC)
  • `cockpit/chat/tool-calls/angular/e2e/scripts/record-c-tool-calls.py` (95 LOC)

The 2 Python recorders predated the shell pattern entirely; they hand-instantiated ChatOpenAI and saved responses directly, drifting from real cap behavior over time. The generic recorder runs the actual cap backend through `aimock --record`, giving authoritative captures.

Kept (1) — documented special case

  • `cockpit/chat/interrupts/angular/e2e/scripts/record-c-interrupts.sh`

c-interrupts requires the interrupt-resume handshake (interrupt() inside ToolNode pauses with status=interrupted; client must POST `command.resume`). The generic recorder treats `interrupted` as terminal and doesn't drive that two-phase dance. The script now has a header block explaining why it's the special case.

The `record` Nx target in `cockpit/chat/interrupts/angular/project.json` continues to point at this script.

Test plan

  • CI passes (no `e2e` targets reference deleted scripts).
  • Reviewer: `scripts/record-aimock-cap.sh` is the canonical recorder for any non-interrupt cap going forward.

Identified during

Post-Task-#4 e2e audit, item #4.

🤖 Generated with Claude Code

…ecorder

Five per-cap record scripts removed in favor of scripts/record-aimock-cap.sh
(shipped in PR #482). The generic recorder reads cap metadata from the
capability registry and drives any normal LLM-call → tool_call → continuation
flow:

Deleted (5):
- cockpit/chat/generative-ui/angular/e2e/scripts/record-c-generative-ui.sh
- cockpit/chat/a2ui/angular/e2e/scripts/record-c-a2ui.sh
- cockpit/chat/subagents/angular/e2e/scripts/record-c-subagents.sh
- cockpit/langgraph/streaming/angular/e2e/scripts/record-streaming.py
- cockpit/chat/tool-calls/angular/e2e/scripts/record-c-tool-calls.py

The 2 Python recorders predated the shell pattern entirely; they
hand-instantiated ChatOpenAI and saved responses directly, drifting from
real cap behavior over time. The generic recorder runs the actual cap
backend through aimock --record, giving authoritative captures.

Kept (1) as documented special case:
- cockpit/chat/interrupts/angular/e2e/scripts/record-c-interrupts.sh

c-interrupts requires interrupt-resume handshake (interrupt() inside
ToolNode pauses the run with status=interrupted; the client must POST
command.resume to continue). The generic recorder doesn't drive that
two-phase dance — it treats `interrupted` as terminal. Header block in
the kept script now explains why it's the special case.

Identified during the post-Task-#4 e2e audit (item #4).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 20, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
threadplane Ready Ready Preview, Comment May 20, 2026 10:25pm

Request Review

@blove blove merged commit 45553f9 into main May 20, 2026
42 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant