# Route auto-oncall images through Investibook parsing

<!-- auto-oncall-optimization-record
{
  "schemaVersion": "auto-oncall-optimization-record-v1",
  "optimizationId": "investibook-image-parse-routing-2026-07-21",
  "problems": [
    {
      "problemId": "ao-images-bypass-investibook-parser",
      "summary": "Auto-oncall bypasses Investibook image parsing and sends non-image plus image IDs in one chat request, which either makes images unreadable or exceeds the four-image message limit.",
      "status": "optimized_verified",
      "issueKeys": ["ST-2821"],
      "sourceRefs": [],
      "signalTextIncludesAny": ["this model does not support image input", "unable to read the attached context.md"],
      "observedThrough": "2026-07-21",
      "effectiveAt": "2026-07-21T09:04:00.000Z",
      "verifiedAt": "2026-07-21T09:13:57.059Z",
      "attemptedAction": "Parse canonical images, keep non-images on workspace paths, and send image IDs in same-session batches of at most four before the final diagnosis.",
      "evidenceUrl": "https://investibook.com/workspace/ws-06e09ae12d4df57fc209d64c65e61ab3"
    }
  ]
}
-->

- Optimization ID: `investibook-image-parse-routing-2026-07-21`
- Title: Route auto-oncall images through Investibook parsing
- Owner: auto-oncall-services
- Source type: live auto-oncall semantic failure
- Source reference: `ST-2821`, run DB `60033`

## Bounded problem

Auto-oncall uploaded both generated `context.md` and Jira images with
`parse=false`. Investibook could read the workspace file after its file/image
split, but its raw-image ACP path was not readable by the active Agent model.
The UI path succeeded because it let Investibook generate and inject an image
summary first. The initial routing fix exposed a second caller bug: auto-oncall
sent all uploaded IDs to a chat parameter that accepts images only and enforces
a maximum of four images per message.

## Status

- Implementation: image parsing and same-session image batching complete; live
  Investibook smoke passed with all 10 available ST-2821 images.
- Effective/deployment: deployed to staging from aisupport PRs `#424` and
  `#425`; app-delivery PRs `#75112` and `#75115` updated the staging image.

## Problem validation

| Problem signal | Ticket keys | Status | Evidence |
| --- | --- | --- | --- |
| Mixed context and image input bypasses the image parser and produces an unreadable-image response | `ST-2821` | `optimized_verified` | Post-change run DB `60046`; Investibook workspace `ws-06e09ae12d4df57fc209d64c65e61ab3` completed with primary evidence |
| More than four uploaded IDs fail the Investibook chat request with HTTP 400 | `ST-2821` | `optimized_verified` | Post-change run DB `60046` completed after three same-session image batches; no HTTP 400 |

## Post-change evidence

- Run DB `60046` succeeded with `decision=internal_only` and the Investibook
  manifest recorded `available`, `completed`, and `primaryEvidence=true`.
- Jira internal comment `23205005` was updated in place and remained private.
- The Feishu Ticket Analytics row was refreshed to `succeeded`,
  `internal_only`, and `automatically_handled`; the bounded sync had zero
  failures.

## Unresolved gaps and next action

- The input materializer supplied the configured maximum of 10 of 18 candidate
  attachments. The remaining eight-file omission is a separate input-limit
  policy, not an Investibook parsing or batching failure.
- Continue monitoring mixed document/image tickets for semantic regressions.
