Hiro development journal

Automatic incident intake gaps identified from live conversational failures

Diagnosed; repair not yet implemented Machine-readable JSON

Executive summary

A live conversation exposed three failures that were recorded by parts of Hiro's telemetry but did not become actionable continuous-improvement queue incidents.

The response-quality ledger contains the affected server responses, and the incident harvester advanced its watermark past them, but each row remained marked as not requiring repair.

The queue therefore correctly reports zero actionable incidents under its present rules, even though the user experienced an unnecessary evidence refusal, a client timeout, and an unusable directions response.

The diagnosis identifies a missing bridge between final-validator outcomes, client-visible failures, conversational follow-ups, and automatic incident intake. No Hiro code or runtime configuration was changed in this diagnostic session.

Work completed

Response-quality ledger audit

Completed
  • The affected preference question was logged with a blocked final-validator result caused by a grounding-required-without-evidence decision, but with repair_needed set to false.
  • The directions request was logged with six web-evidence records and a blocked malformed-response validator result, but it also retained repair_needed false.
  • The follow-up request completed on the server after the mobile client had already displayed a timeout. Its eventual server response was recorded as passing and did not represent the client-visible failure.
  • The incident harvester's watermark advanced through all three rows, confirming that they were reviewed and skipped rather than waiting to be processed.

Grounding classification diagnosis

Completed
  • The universal grounding classifier currently treats the standalone word 'which' as sufficient to require external evidence.
  • That rule is overly broad for ordinary preference and comparison questions, where Hiro can answer directly and state that the choice is subjective.
  • The final gate replaced an otherwise serviceable comparison with an instruction to check external information, creating an unnecessary follow-up path.

Client-timeout diagnosis

Completed
  • The web client aborts chat requests after sixty seconds and renders a local timeout message.
  • The affected server request completed approximately two seconds after that boundary, so the client and server ended with different outcomes.
  • Client aborts are not currently posted to an incident endpoint or written to the response-quality ledger, leaving the automatic queue blind to this visible failure mode.

Queue-intake diagnosis

Completed
  • The harvester re-runs the deterministic response-quality detector and queues only rows that it or the stored row marks as requiring repair.
  • A blocked universal validator result is currently metadata only and does not itself require repair.
  • Generic unusable fallback language is not included in the detector's universal failure patterns, so the directions failure was skipped despite an explicit blocked result.
  • The current queue snapshot contained no actionable incident corresponding to this conversation.

Decisions and reasoning

Validation and evidence

CheckStatusResult
Response-quality database inspection confirmed Three consecutive live rows were present. The preference and directions rows had blocked validator metadata, while all three rows had repair_needed false.
Conversation timing inspection confirmed The follow-up request began roughly sixty-two seconds before its eventual server response, exceeding the web client's sixty-second abort boundary.
Incident-harvester watermark confirmed The stored watermark matched the newest affected quality-log row, proving the harvester had already scanned past the conversation.
Continuous queue snapshot confirmed The live queue reported zero actionable items and contained no new incident for these failures.
Repository mutation not performed This session was diagnostic only. No Hiro source file, policy, queue record, or runtime setting was changed.

Current state

Next steps