|
|
@@ -0,0 +1,498 @@
|
|
|
+{
|
|
|
+ "status": "rolled_back_after_failed_release_acceptance",
|
|
|
+ "candidateCommit": "d7cb82984310f4b4adff1781cb111cbed2fd778a",
|
|
|
+ "candidateRelease": "mobile-home-recovery-d7cb82984310-20261114T043429110Z",
|
|
|
+ "measurement": {
|
|
|
+ "startedAt": "2026-11-14T04:36:04.716Z",
|
|
|
+ "endedAt": "2026-11-14T04:43:21.323Z",
|
|
|
+ "network": "Fast4G 20ms latency, 4Mbps down, 3Mbps up, direct browser, fresh contexts",
|
|
|
+ "viewport": "390x844",
|
|
|
+ "stableReadyMs": 500,
|
|
|
+ "percentiles": "nearest rank on successful samples only; failures separately reported",
|
|
|
+ "limitations": [
|
|
|
+ "Earlier baseline is not concurrent randomized control; server/load differences confound causal attribution.",
|
|
|
+ "Some supplementary UI/control requests overlapped; this is not an isolated single-user server benchmark.",
|
|
|
+ "Script does not capture all requestfailed events; missing responses must not be interpreted as zero API failures."
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "summary": {
|
|
|
+ "teacher-home": {
|
|
|
+ "samples": 10,
|
|
|
+ "pageReady": 10,
|
|
|
+ "failed": 0,
|
|
|
+ "p75ReadyMsSuccessful": 10461,
|
|
|
+ "p95ReadyMsSuccessful": 21403,
|
|
|
+ "earlierP75ReadyMs": 7705,
|
|
|
+ "apis": {
|
|
|
+ "e_order_tongji": {
|
|
|
+ "responsesCaptured": 10,
|
|
|
+ "p75Ms": 4801,
|
|
|
+ "p95Ms": 8138,
|
|
|
+ "nonSuccess": 0
|
|
|
+ },
|
|
|
+ "app_review_page": {
|
|
|
+ "responsesCaptured": 10,
|
|
|
+ "p75Ms": 7811,
|
|
|
+ "p95Ms": 19075,
|
|
|
+ "nonSuccess": 0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "student-home": {
|
|
|
+ "samples": 10,
|
|
|
+ "pageReady": 10,
|
|
|
+ "failed": 0,
|
|
|
+ "p75ReadyMsSuccessful": 11113,
|
|
|
+ "p95ReadyMsSuccessful": 22408,
|
|
|
+ "earlierP75ReadyMs": 14321,
|
|
|
+ "apis": {
|
|
|
+ "app_account_overview": {
|
|
|
+ "responsesCaptured": 9,
|
|
|
+ "p75Ms": 4225,
|
|
|
+ "p95Ms": 8588,
|
|
|
+ "nonSuccess": 0
|
|
|
+ },
|
|
|
+ "app_review_page": {
|
|
|
+ "responsesCaptured": 10,
|
|
|
+ "p75Ms": 6780,
|
|
|
+ "p95Ms": 8413,
|
|
|
+ "nonSuccess": 0
|
|
|
+ },
|
|
|
+ "e_order_tongji": {
|
|
|
+ "responsesCaptured": 10,
|
|
|
+ "p75Ms": 6724,
|
|
|
+ "p95Ms": 18124,
|
|
|
+ "nonSuccess": 0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "teacher-course": {
|
|
|
+ "samples": 10,
|
|
|
+ "pageReady": 9,
|
|
|
+ "failed": 1,
|
|
|
+ "p75ReadyMsSuccessful": 6307,
|
|
|
+ "p95ReadyMsSuccessful": 8387,
|
|
|
+ "earlierP75ReadyMs": 5153,
|
|
|
+ "apis": {
|
|
|
+ "app_companion_overview": {
|
|
|
+ "responsesCaptured": 9,
|
|
|
+ "p75Ms": 3759,
|
|
|
+ "p95Ms": 5603,
|
|
|
+ "nonSuccess": 0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "student-course": {
|
|
|
+ "samples": 10,
|
|
|
+ "pageReady": 9,
|
|
|
+ "failed": 1,
|
|
|
+ "p75ReadyMsSuccessful": 6643,
|
|
|
+ "p95ReadyMsSuccessful": 13806,
|
|
|
+ "earlierP75ReadyMs": 6158,
|
|
|
+ "apis": {
|
|
|
+ "app_companion_overview": {
|
|
|
+ "responsesCaptured": 9,
|
|
|
+ "p75Ms": 4244,
|
|
|
+ "p95Ms": 11114,
|
|
|
+ "nonSuccess": 0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "checks": {
|
|
|
+ "studentHomeRequestsUseSnapshot": true,
|
|
|
+ "teacherHomeRequestsSkipVersions": true,
|
|
|
+ "financialAccounts": {
|
|
|
+ "at": "2026-11-14T04:41:20.106Z",
|
|
|
+ "accountsChecked": 2,
|
|
|
+ "financialFieldsPerAccount": 4,
|
|
|
+ "balancesUnchanged": true,
|
|
|
+ "teacherStatisticsUnchanged": true,
|
|
|
+ "comparisonNote": "Compare serialized snapshots consistently; absent boffExp was undefined in memory and omitted in JSON. Initial verifier false alarm corrected without excluding any present financial field."
|
|
|
+ },
|
|
|
+ "sampleStudentFullLedgerUnchanged": true,
|
|
|
+ "financialSource": {
|
|
|
+ "baseCommit": "81f8b44",
|
|
|
+ "filesVerified": 15,
|
|
|
+ "allUnchanged": true
|
|
|
+ },
|
|
|
+ "publicAssets": [
|
|
|
+ {
|
|
|
+ "role": "mobile",
|
|
|
+ "releaseId": "mobile-home-recovery-d7cb82984310-20261114T043429110Z",
|
|
|
+ "commit": "d7cb82984310f4b4adff1781cb111cbed2fd778a",
|
|
|
+ "filesVerified": 105,
|
|
|
+ "routes": [
|
|
|
+ "pages/home/index",
|
|
|
+ "pages/member/starshop",
|
|
|
+ "pages/companion/index",
|
|
|
+ "pages/stu/stu_abc",
|
|
|
+ "pages/stu/stu_con"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "desktopUi": [
|
|
|
+ {
|
|
|
+ "role": "guest",
|
|
|
+ "ok": true,
|
|
|
+ "jsErrors": 0,
|
|
|
+ "noHorizontalOverflow": true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "role": "teacher",
|
|
|
+ "ok": true,
|
|
|
+ "jsErrors": 0,
|
|
|
+ "noHorizontalOverflow": true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "role": "student",
|
|
|
+ "ok": true,
|
|
|
+ "jsErrors": 0,
|
|
|
+ "noHorizontalOverflow": true
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "courseControl": [
|
|
|
+ {
|
|
|
+ "version": "before",
|
|
|
+ "role": "student",
|
|
|
+ "run": 1,
|
|
|
+ "ok": true,
|
|
|
+ "elapsedMs": 4604,
|
|
|
+ "events": [
|
|
|
+ {
|
|
|
+ "kind": "response",
|
|
|
+ "method": "POST",
|
|
|
+ "status": 200,
|
|
|
+ "ms": 4602
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "version": "before",
|
|
|
+ "role": "teacher",
|
|
|
+ "run": 1,
|
|
|
+ "ok": true,
|
|
|
+ "elapsedMs": 3983,
|
|
|
+ "events": [
|
|
|
+ {
|
|
|
+ "kind": "response",
|
|
|
+ "method": "POST",
|
|
|
+ "status": 200,
|
|
|
+ "ms": 3942
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "version": "after",
|
|
|
+ "role": "student",
|
|
|
+ "run": 1,
|
|
|
+ "ok": true,
|
|
|
+ "elapsedMs": 5499,
|
|
|
+ "events": [
|
|
|
+ {
|
|
|
+ "kind": "response",
|
|
|
+ "method": "POST",
|
|
|
+ "status": 200,
|
|
|
+ "ms": 5494
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "version": "after",
|
|
|
+ "role": "teacher",
|
|
|
+ "run": 1,
|
|
|
+ "ok": true,
|
|
|
+ "elapsedMs": 5846,
|
|
|
+ "events": [
|
|
|
+ {
|
|
|
+ "kind": "response",
|
|
|
+ "method": "POST",
|
|
|
+ "status": 200,
|
|
|
+ "ms": 5803
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "version": "after",
|
|
|
+ "role": "student",
|
|
|
+ "run": 2,
|
|
|
+ "ok": true,
|
|
|
+ "elapsedMs": 632,
|
|
|
+ "events": [
|
|
|
+ {
|
|
|
+ "kind": "response",
|
|
|
+ "method": "POST",
|
|
|
+ "status": 200,
|
|
|
+ "ms": 619
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "version": "after",
|
|
|
+ "role": "teacher",
|
|
|
+ "run": 2,
|
|
|
+ "ok": false,
|
|
|
+ "elapsedMs": 27158,
|
|
|
+ "events": [
|
|
|
+ {
|
|
|
+ "kind": "requestfailed",
|
|
|
+ "method": "POST",
|
|
|
+ "error": "net::ERR_ABORTED",
|
|
|
+ "ms": 20233
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "error": "请求暂未完成,请刷新重试。重新加载"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "version": "before",
|
|
|
+ "role": "student",
|
|
|
+ "run": 2,
|
|
|
+ "ok": true,
|
|
|
+ "elapsedMs": 9561,
|
|
|
+ "events": [
|
|
|
+ {
|
|
|
+ "kind": "response",
|
|
|
+ "method": "POST",
|
|
|
+ "status": 200,
|
|
|
+ "ms": 9551
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "version": "before",
|
|
|
+ "role": "teacher",
|
|
|
+ "run": 2,
|
|
|
+ "ok": true,
|
|
|
+ "elapsedMs": 744,
|
|
|
+ "events": [
|
|
|
+ {
|
|
|
+ "kind": "response",
|
|
|
+ "method": "POST",
|
|
|
+ "status": 200,
|
|
|
+ "ms": 701
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "version": "before",
|
|
|
+ "role": "student",
|
|
|
+ "run": 3,
|
|
|
+ "ok": true,
|
|
|
+ "elapsedMs": 601,
|
|
|
+ "events": [
|
|
|
+ {
|
|
|
+ "kind": "response",
|
|
|
+ "method": "POST",
|
|
|
+ "status": 200,
|
|
|
+ "ms": 585
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "version": "before",
|
|
|
+ "role": "teacher",
|
|
|
+ "run": 3,
|
|
|
+ "ok": true,
|
|
|
+ "elapsedMs": 13891,
|
|
|
+ "events": [
|
|
|
+ {
|
|
|
+ "kind": "response",
|
|
|
+ "method": "POST",
|
|
|
+ "status": 200,
|
|
|
+ "ms": 13847
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "version": "after",
|
|
|
+ "role": "student",
|
|
|
+ "run": 3,
|
|
|
+ "ok": true,
|
|
|
+ "elapsedMs": 589,
|
|
|
+ "events": [
|
|
|
+ {
|
|
|
+ "kind": "response",
|
|
|
+ "method": "POST",
|
|
|
+ "status": 200,
|
|
|
+ "ms": 582
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "version": "after",
|
|
|
+ "role": "teacher",
|
|
|
+ "run": 3,
|
|
|
+ "ok": true,
|
|
|
+ "elapsedMs": 11051,
|
|
|
+ "events": [
|
|
|
+ {
|
|
|
+ "kind": "response",
|
|
|
+ "method": "POST",
|
|
|
+ "status": 200,
|
|
|
+ "ms": 11009
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "poolReadOnlySnapshots": [
|
|
|
+ {
|
|
|
+ "requestMs": 277,
|
|
|
+ "at": "2026-11-14T04:43:00.483Z",
|
|
|
+ "before": {
|
|
|
+ "total": 0,
|
|
|
+ "idle": 0,
|
|
|
+ "waiting": 0,
|
|
|
+ "max": 2,
|
|
|
+ "connectTimeout": 5000
|
|
|
+ },
|
|
|
+ "after": {
|
|
|
+ "total": 1,
|
|
|
+ "idle": 1,
|
|
|
+ "waiting": 0,
|
|
|
+ "max": 2,
|
|
|
+ "connectTimeout": 5000
|
|
|
+ },
|
|
|
+ "sqlRoundTripMs": 49,
|
|
|
+ "db": {
|
|
|
+ "max_connections": "192",
|
|
|
+ "all_connections": "41",
|
|
|
+ "db_connections": "7",
|
|
|
+ "db_active": "1"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "requestMs": 92,
|
|
|
+ "at": "2026-11-14T04:43:21.292Z",
|
|
|
+ "before": {
|
|
|
+ "total": 2,
|
|
|
+ "idle": 2,
|
|
|
+ "waiting": 0,
|
|
|
+ "max": 2,
|
|
|
+ "connectTimeout": 5000
|
|
|
+ },
|
|
|
+ "after": {
|
|
|
+ "total": 2,
|
|
|
+ "idle": 2,
|
|
|
+ "waiting": 0,
|
|
|
+ "max": 2,
|
|
|
+ "connectTimeout": 5000
|
|
|
+ },
|
|
|
+ "sqlRoundTripMs": 4,
|
|
|
+ "db": {
|
|
|
+ "max_connections": "192",
|
|
|
+ "all_connections": "41",
|
|
|
+ "db_connections": "7",
|
|
|
+ "db_active": "1"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "requestMs": 135,
|
|
|
+ "at": "2026-11-14T04:43:21.425Z",
|
|
|
+ "before": {
|
|
|
+ "total": 0,
|
|
|
+ "idle": 0,
|
|
|
+ "waiting": 0,
|
|
|
+ "max": 2,
|
|
|
+ "connectTimeout": 5000
|
|
|
+ },
|
|
|
+ "after": {
|
|
|
+ "total": 1,
|
|
|
+ "idle": 1,
|
|
|
+ "waiting": 0,
|
|
|
+ "max": 2,
|
|
|
+ "connectTimeout": 5000
|
|
|
+ },
|
|
|
+ "sqlRoundTripMs": 36,
|
|
|
+ "db": {
|
|
|
+ "max_connections": "192",
|
|
|
+ "all_connections": "41",
|
|
|
+ "db_connections": "7",
|
|
|
+ "db_active": "1"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "requestMs": 89,
|
|
|
+ "at": "2026-11-14T04:43:00.806Z",
|
|
|
+ "before": {
|
|
|
+ "total": 1,
|
|
|
+ "idle": 1,
|
|
|
+ "waiting": 0,
|
|
|
+ "max": 2,
|
|
|
+ "connectTimeout": 5000
|
|
|
+ },
|
|
|
+ "after": {
|
|
|
+ "total": 1,
|
|
|
+ "idle": 1,
|
|
|
+ "waiting": 0,
|
|
|
+ "max": 2,
|
|
|
+ "connectTimeout": 5000
|
|
|
+ },
|
|
|
+ "sqlRoundTripMs": 3,
|
|
|
+ "db": {
|
|
|
+ "max_connections": "192",
|
|
|
+ "all_connections": "41",
|
|
|
+ "db_connections": "7",
|
|
|
+ "db_active": "1"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "conclusion": "Candidate ran and its new flags were verified, but the agreed release stability gate failed. No proof that the changes caused the intermittent latency; do not declare them fully accepted. Roll back entries and gateway, preserving candidate and evidence.",
|
|
|
+ "rollback": {
|
|
|
+ "gatewaysAndReads": {
|
|
|
+ "at": "2026-11-14T04:46:25.570Z",
|
|
|
+ "gateways": [
|
|
|
+ {
|
|
|
+ "path": "xiaoshu/ops/gateway-v3",
|
|
|
+ "sha256": "6f99a3826ab90bb3911d13bf33c2290ebbf850d77ac8163ac4c20b22c8518c0f",
|
|
|
+ "matchesPreRelease": true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "path": "xiaoshu/app/gateway",
|
|
|
+ "sha256": "000818f3add2578a1c9cc24a47121fc3dc4fd04914b09df31fa3b48bbd4bfc98",
|
|
|
+ "matchesPreRelease": true
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "reads": [
|
|
|
+ {
|
|
|
+ "role": "teacher",
|
|
|
+ "action": "app_companion_overview",
|
|
|
+ "ok": true,
|
|
|
+ "ms": 1763,
|
|
|
+ "balancesMatchPreRelease": true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "role": "student",
|
|
|
+ "action": "app_companion_overview",
|
|
|
+ "ok": true,
|
|
|
+ "ms": 2786,
|
|
|
+ "balancesMatchPreRelease": true
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "rollbackVerified": true
|
|
|
+ },
|
|
|
+ "public": [
|
|
|
+ {
|
|
|
+ "role": "mobile",
|
|
|
+ "releaseId": "mobile-course-word-speed-0b7d9d5f89c7-20261112T074222208Z",
|
|
|
+ "commit": "0b7d9d5f89c7f877859fcebdbcda914027185e38",
|
|
|
+ "filesVerified": 105,
|
|
|
+ "routes": [
|
|
|
+ "pages/home/index",
|
|
|
+ "pages/member/starshop",
|
|
|
+ "pages/companion/index",
|
|
|
+ "pages/stu/stu_abc",
|
|
|
+ "pages/stu/stu_con"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "cdn": {
|
|
|
+ "id": "8189914224",
|
|
|
+ "status": "task_done",
|
|
|
+ "processing": 0,
|
|
|
+ "succeed": 1,
|
|
|
+ "failed": 0,
|
|
|
+ "total": 1
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|