{"schemaVersion":"developer.reits.tech/ui-ci/v1","generatedAt":"2026-07-17","policy":"This packet proves a registered design contract only. Repository-owned evidence is required for merge, release and production readiness.","packet":{"screenId":"target-matrix-friend-requests","slice":"K12","title":"好友请求与并发关系决策","product":"matrix-x-chat-ios","productLabel":"Matrix X Chat · Communication","route":"AppRoute.friendRequests · FriendRequestsView","platform":"iOS","pattern":"mobile-list","source":"docs/ui-blueprint/18-k12-matrix-x-communication.md","checkedAt":"2026-07-17","owners":{"architecture":"Architecture Office","implementation":"Matrix X Chat · Communication","quality":"QA Architecture"},"viewports":["compact iPhone","current iPhone","Dynamic Type XXXL"],"stateFamily":[{"key":"READY","definition":"通信状态已就绪"},{"key":"LOADING","definition":"安全快照同步"},{"key":"EMPTY","definition":"当前范围为空"},{"key":"PARTIAL_ERROR","definition":"部分内容未同步"},{"key":"ERROR","definition":"本次同步失败"},{"key":"OFFLINE_STALE","definition":"离线只读快照"},{"key":"FORBIDDEN","definition":"关系或权限不允许"},{"key":"DESTRUCTIVE_CONFIRM","definition":"高影响操作确认"},{"key":"SUCCESS_RECEIPT","definition":"服务端回执已完成"}],"contracts":["FriendRequest","RelationshipRevision","RequestSource","RequestDecision","ExpiryPolicy","DecisionReceipt","RiskAction"],"actions":["接受","拒绝","撤回","查看资料","拉黑并拒绝","重试冲突"],"guards":["iOS main@257e604 仍通过 WebSocket query 传 token，且未消费 device_id、since_event_id、replay_complete 与 ACK cursor；im-core main@d809074 已提供 realtime v2，不能把服务端完成度画成客户端已上线","所有会话、消息、用户、计数和游标均为 STRUCTURE SAMPLE；页面结构、主干路由、API 边界与已标注缺口才是证据","生产 im-core 与 PostgreSQL/Redis/NATS 仍共享单 EC2 故障域；客户端必须保留离线、部分失败、重放与幂等收敛状态","接受与拒绝必须绑定当前 relationship revision；过期或另一设备已处理后禁止重复写入"],"policyChecks":[{"id":"stable-id","label":"Stable Screen ID","pass":true},{"id":"f4-target","label":"Isolated F4 TARGET","pass":true},{"id":"nine-state","label":"Nine-state family","pass":true},{"id":"interaction","label":"Actions defined","pass":true},{"id":"contracts","label":"Data contracts defined","pass":true},{"id":"guards","label":"Architecture guards defined","pass":true},{"id":"evidence-plan","label":"G1–G8 evidence plan","pass":true}],"evidence":[{"id":"task-packet","gate":"G1","label":"Task packet","proof":"scope、owner paths、依赖、non-goals 与 rollback","path":"ui-ci/target-matrix-friend-requests/task-packet.yaml","status":"missing"},{"id":"screen-contract","gate":"G1","label":"Screen contract","proof":"稳定 Screen ID、route、regions、actions、states、contracts 与 risks","path":"/api/ui-ci/target-matrix-friend-requests","status":"registered"},{"id":"static-report","gate":"G2","label":"Static report","proof":"format、lint、typecheck、schema 与 secret scan","path":"ui-ci/target-matrix-friend-requests/static/report.json","status":"missing"},{"id":"fixture-pack","gate":"G3","label":"State fixture pack","proof":"九态确定性 fixture、long/large/locale 与错误注入","path":"ui-ci/target-matrix-friend-requests/fixtures/manifest.json","status":"missing"},{"id":"consumer-contract","gate":"G4","label":"Consumer contract","proof":"producer schema、consumer fixtures、compatibility 与 migration window","path":"ui-ci/target-matrix-friend-requests/contracts/results.json","status":"missing"},{"id":"experience-bundle","gate":"G5","label":"Experience bundle","proof":"visual、a11y、interaction、responsive 与 native device matrix","path":"ui-ci/target-matrix-friend-requests/experience/manifest.json","status":"missing"},{"id":"security-negative","gate":"G6","label":"Security negative","proof":"authz、resource binding、abuse、privacy、redaction 与 artifact integrity","path":"ui-ci/target-matrix-friend-requests/security/results.json","status":"missing"},{"id":"release-manifest","gate":"G7","label":"Release manifest","proof":"exact commit、artifact digest、SBOM、config、migration 与 rollback drill","path":"ui-ci/target-matrix-friend-requests/release/manifest.json","status":"missing"},{"id":"production-proof","gate":"G8","label":"Production proof","proof":"external synthetic、telemetry、error budget、owner ack 与 incident link","path":"ui-ci/target-matrix-friend-requests/production/evidence.json","status":"missing"}],"registryValid":true,"mergeReady":false,"releaseReady":false,"productionReady":false}}