mirror of
https://github.com/permissionlesstech/bitchat-android.git
synced 2026-08-08 06:46:11 +00:00
252 lines
9.5 KiB
JSON
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"]
|
|
}
|
|
]
|
|
}
|