Skip to content

Review Tutor connectors: deferred P3 polish from #77/#78 review #79

Description

@ElbertePlinio

Deferred P3 findings from the #63 connector review rounds (PRs #77, #78). None blocks merge; all are message-quality or test-strength items.

Claude Code connector (#77, src/connectors/claude-code.ts)

  • The "keeps answers per run" test does not pin the leak it was added for: run 2 also emits an assistant event. Make run 2 a bare {"type":"result","subtype":"success"} and expect "Claude Code returned an empty answer."
  • sawResult/model clear only via finish(); when the runner fails first (non-zero exit, timeout, limits, cancel) they survive into the next run and skew the diagnostic ("returned an empty answer" instead of "exited without a result"). Cleanest: a per-run reset() the runner calls, or a stateless connector — apply the same to the Codex connector.
  • "Claude Code rejected model " reads "rejected model unknown" in exactly its own case, because the model name comes from system/init, which never arrives for an invalid alias. Carry the requested model without mutating in spawnSpec, or drop it from the message.

Product note (not a defect): claude-code:opus is offered with high/xhigh levels. The reviewer-side "Opus ≤ medium" rule is an agent-orchestration policy, not a product constraint; decide whether the tutor should mirror it.

Source: Opus fix-verification on #77 (089ff84) and #78 (574e65a820026d).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions