{
  "rp": "0.2",
  "id": "goldfish-v01",
  "name": "Goldfish v01 (pocket recorder, no radio)",
  "notes": "Goldfish's expression of the Resolution Protocol. Parameters from ADR-0003/0005/0008/0009/0010. default_level 3 (attributed) suits a conference where the ring is visible; it is the operator's choice, not anyone's consent (SPEC §8). Where every party must consent, set default_level to 0 — open with counsel, backlog B-19. The claiming extension is off until the device can re-identify voices (backlog B-29). side_conversations is on deliberately: Rafa asked for two groups of three side by side at one table (RP App. A.1 recommends off unless needed).",
  "default_level": 3,
  "max_default_level": 4,
  "max_voice_level": 4,
  "invocation": [
    "goldfish"
  ],
  "locales": [
    "en",
    "es"
  ],
  "objection_window": "PT30S",
  "session_gap": "PT10M",
  "attribution_threshold": 0.8,
  "max_participants": 10,
  "room_raise": "invocation",
  "extensions": [
    "side_conversations"
  ],
  "reply_window": "PT6S",
  "replies_for_group": 2,
  "retention": [
    {
      "until": "P3D",
      "max_level": 5
    },
    {
      "until": "P30D",
      "max_level": 2
    },
    {
      "until": "P1Y",
      "max_level": 1
    }
  ],
  "bindings": {
    "audio_in": {
      "type": "i2s",
      "mics": 2,
      "part": "SPH0645"
    },
    "speaker_separation": {
      "type": "on-device diarisation",
      "features": "RAM only (SPEC §4.2)"
    },
    "recogniser": {
      "type": "on-device streaming ASR (sherpa-onnx Zipformer)"
    },
    "intent_parser": {
      "type": "rp-grammar",
      "fallback_model": "Qwen2.5-0.5B, must pass phrase vectors"
    },
    "store": {
      "type": "aes-gcm containers, key chains per (level, retention class) in ATECC608",
      "erase_per_voice": "planned (backlog B-26)",
      "fail_closed_clock": true
    },
    "indicator": {
      "type": "light-ring",
      "leds": 41,
      "segment_per_voice": true,
      "capture_light": "mic-rail powered (hardware truthful)",
      "map": "firmware/goldfish/display.py",
      "speaking_window": "PT1.5S",
      "room_off": "whole ring a low red glow while the room is off the record (ceiling 0)"
    },
    "handoff": {
      "type": "nfc-ndef",
      "armed_s": 10,
      "note_format": "g1 (deflate-raw, base64url in a URL fragment)",
      "armed_by": "holding the eye (bindings.controls.hold)"
    },
    "clock": {
      "type": "rtc",
      "part": "PCF8523 (Adafruit 5189, CR1220 backup)"
    },
    "radio": "none",
    "controls": {
      "type": "eye-button",
      "press": "room off the record (lower, room, 0, source ui); press again: resume (provisional, SPEC §6.3)",
      "hold": "PT2S",
      "hold_action": "arm the hand-off",
      "part": "6 × 6 mm tactile switch under the eye's light guide"
    }
  }
}
