252 lines
9.5 KiB
JSON

{
"schema_version": 1,
"scenario_version": "1.0",
"scenarios": [
{
"id": "TRN-001",
"category": "transport",
"title": "Complete the physical BLE, GATT, MTU, Wi-Fi Aware, and failover matrix",
"participants": ["android-low", "android-current", "android-aware"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral", "wifi-aware"],
"evidence": ["matrix-check-count", "mtu-case-count", "failure-injection-count", "shutdown-check-count"]
},
{
"id": "AND-001",
"category": "android-platform",
"title": "Complete API-level, manufacturer, permission-revocation, and background gates",
"participants": ["android-low", "android-current", "android-aware"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral", "wifi-aware"],
"evidence": ["api-level-count", "manufacturer-count", "permission-revocation-count", "background-case-count"]
},
{
"id": "A2A-001",
"category": "android-to-android",
"title": "Discover, connect, announce, disconnect, and reconnect",
"participants": ["android-low", "android-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["connection-transitions", "packet-correlation-count", "failure-reasons"]
},
{
"id": "A2A-002",
"category": "android-to-android",
"title": "Exchange public and private messages in both directions",
"participants": ["android-low", "android-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["message-counts", "packet-correlation-count"]
},
{
"id": "A2A-003",
"category": "android-to-android",
"title": "Advance delivery and read receipts",
"participants": ["android-low", "android-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["receipt-transitions"]
},
{
"id": "A2A-004",
"category": "android-to-android",
"title": "Transfer image, audio, and generic files at multiple sizes",
"participants": ["android-low", "android-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["fixture-digests", "transfer-progress", "delivery-digests"]
},
{
"id": "A2A-005",
"category": "android-to-android",
"title": "Relay across three Android devices",
"participants": ["android-low", "android-current", "android-relay"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["route-transitions", "ttl-values", "packet-correlation-count"]
},
{
"id": "A2A-006",
"category": "android-to-android",
"title": "Partition and recover store-and-forward delivery",
"participants": ["android-low", "android-current", "android-relay"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["partition-window", "queue-counts", "delivery-counts"]
},
{
"id": "A2A-007",
"category": "android-to-android",
"title": "Toggle Bluetooth during active transfers",
"participants": ["android-low", "android-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["radio-transitions", "transfer-terminal-state"]
},
{
"id": "A2A-008",
"category": "android-to-android",
"title": "Lock screens and background both apps during mesh operation",
"participants": ["android-low", "android-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["lifecycle-transitions", "service-state", "delivery-counts"]
},
{
"id": "A2A-009",
"category": "android-to-android",
"title": "Kill and recreate one process",
"participants": ["android-low", "android-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["process-generation", "restored-state", "reconnect-count"]
},
{
"id": "A2A-010",
"category": "android-to-android",
"title": "Resolve simultaneous and duplicate links",
"participants": ["android-low", "android-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["candidate-links", "canonical-link-count"]
},
{
"id": "A2A-011",
"category": "android-to-android",
"title": "Fail over through Wi-Fi Aware",
"participants": ["android-current", "android-aware"],
"required": true,
"capabilities": ["wifi-aware"],
"evidence": ["transport-selection", "failover-window", "delivery-counts"]
},
{
"id": "XCL-001",
"category": "cross-client",
"title": "Current Android interoperates with current iOS",
"participants": ["android-current", "ios-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["client-versions", "payload-counts"]
},
{
"id": "XCL-002",
"category": "cross-client",
"title": "Current rewrite contracts interoperate with the last supported Android",
"participants": ["android-current", "android-legacy"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["client-versions", "payload-counts"]
},
{
"id": "XCL-003",
"category": "cross-client",
"title": "Legacy announcements without capabilities remain compatible",
"participants": ["android-current", "android-legacy"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["announcement-version", "peer-state"]
},
{
"id": "XCL-004",
"category": "cross-client",
"title": "Older clients safely ignore current capability announcements",
"participants": ["android-current", "android-legacy"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["announcement-version", "peer-state"]
},
{
"id": "XCL-005",
"category": "cross-client",
"title": "Canonical private media and prerelease decode-only alias interoperate",
"participants": ["android-current", "ios-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["wire-type", "delivery-digests", "downgrade-decision"]
},
{
"id": "XCL-006",
"category": "cross-client",
"title": "Golden vectors match across implementations",
"participants": ["android-current", "ios-current", "android-legacy"],
"required": true,
"capabilities": [],
"evidence": ["vector-manifest-digest", "comparison-counts"]
},
{
"id": "XCL-007",
"category": "cross-client",
"title": "Malformed and unauthenticated inputs are rejected consistently",
"participants": ["android-current", "ios-current", "android-legacy"],
"required": true,
"capabilities": [],
"evidence": ["corpus-digest", "rejection-counts", "crash-count"]
},
{
"id": "XCL-008",
"category": "cross-client",
"title": "Nostr fallback messages and receipts interoperate",
"participants": ["android-current", "ios-current"],
"required": true,
"capabilities": ["local-relay", "tor"],
"evidence": ["relay-fixture", "event-id-count", "receipt-counts"]
},
{
"id": "END-001",
"category": "endurance",
"title": "Multi-hour discovery, connect, and disconnect soak",
"participants": ["android-low", "android-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"minimum_duration_minutes": 240,
"evidence": ["duration-minutes", "connection-counts", "failure-counts"]
},
{
"id": "END-002",
"category": "endurance",
"title": "Repeated large-transfer and cancellation cycles",
"participants": ["android-low", "android-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"minimum_cycles": 50,
"evidence": ["cycle-count", "delivery-counts", "cancellation-counts"]
},
{
"id": "END-003",
"category": "endurance",
"title": "Resource growth remains bounded",
"participants": ["android-low", "android-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["memory-samples", "thread-samples", "fd-samples", "wakelock-samples", "battery-samples"]
},
{
"id": "END-004",
"category": "endurance",
"title": "Foreground service survives with screens off",
"participants": ["android-low", "android-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["service-state", "screen-state", "delivery-counts"]
},
{
"id": "END-005",
"category": "endurance",
"title": "Nostr survives network and Tor availability changes",
"participants": ["android-current"],
"required": true,
"capabilities": ["local-relay", "tor"],
"evidence": ["network-transitions", "tor-transitions", "receipt-counts"]
},
{
"id": "END-006",
"category": "endurance",
"title": "Shutdown releases radios, sockets, jobs, and wake locks",
"participants": ["android-low", "android-current"],
"required": true,
"capabilities": ["ble-central", "ble-peripheral"],
"evidence": ["resource-terminal-state", "late-callback-count"]
}
]
}