Skip to content

Crisis incident method

Date: 2026-09-19 Scope: Radio Check live path and Meridian crisis short-circuit. Not a clinical review. Rule: A miss is investigated from categorical signals and code, never by reading a veteran's words out of a log. Crisis content is not a log field.

What is stored

Radio Check events store only:

  • event type (settings_updated or check_in_responded)
  • categorical response (ok, struggling, need_support)
  • cycle key, actor type, actor ref, timestamps

Free-text keys are rejected. An invalid response value is rejected with payload.response is not an allowed category. The rejected string is not copied into the error or the log line.

Failure logs for Radio Check (radio_check_event_append_failed, radio_check_status_failed, radio_check_settings_failed, radio_check_respond_failed) record errorName only. They do not record error.message.

Meridian's crisis short-circuit returns Section 2 and does not call the model. Its metadata is crisis_gate: true and provider: crisis_gate. It does not log the veteran turn.

Eval reports under last1-meridian/reports/ are confidential harness artifacts. They are not production logs and are not an incident source for a live veteran.

What a miss is

A miss is one of:

  • a veteran turn that should have shown Section 2 and did not
  • a Section 2 card that contained anything besides the signed text
  • a Radio Check log line that contains veteran speech

A dismissal is not a miss. Dismissal is a UI action only.

How to investigate

  1. Do not ask anyone to paste the veteran's words into chat, email, or a ticket.
  2. Record the surface (Radio Check or Meridian), the build, LASTVET_CRISIS_LIVE_ENABLED, and the time window. Use veteran id and cycle key if a Radio Check event exists. Do not attach utterance text.
  3. Confirm the log line has no utterance. If it does, treat that as its own incident: stop the log path, do not copy the line into a new system.
  4. Reproduce with a synthetic prompt from tests/test_crisis_validation_packet.py or CRISIS_PROTOCOL.md section 4, on the same build. Do not use the veteran's text as the test fixture.
  5. If the synthetic prompt fails the gate or the verbatim grader, the miss is a code defect. Fix the gate or the card, then re-run tests/test_crisis_validation_packet.py. Do not flip LASTVET_CRISIS_LIVE_ENABLED as part of the fix.
  6. If the synthetic prompt passes and the live flag was off, the miss is the flag-off stub. That is expected until the re-flip. Do not describe the stub as Section 2.
  7. Counsel and Mic are notified from this method's categorical record, not from a transcript.