)]}'
{
  "commit": "d9a8e89d7d2d445056c152691df2611a0fcfd34d",
  "tree": "0d384397f40362a1e86525fc1edbdd111330f676",
  "parents": [
    "ffa3f2bc655f813e4581612a73aca7e394561eaa"
  ],
  "author": {
    "name": "Zimuzo Ezeozue",
    "email": "zezeozue@google.com",
    "time": "Tue Oct 06 14:26:21 2026 +0000"
  },
  "committer": {
    "name": "Zimuzo Ezeozue",
    "email": "zezeozue@google.com",
    "time": "Wed Oct 07 14:10:51 2026 +0000"
  },
  "message": "ui+tp: Android ProcessState binding graph explorer and causal trigger analysis\n\nTrace processor:\n- Reconstruct per-OomAdjuster-pass snapshots of processes, services,\n  service bindings, providers and provider connections from the\n  android.process_state data source and framework track events.\n- Recover the initial state of processes from process_state_died and\n  reconstruct processes alive at trace start that die in-trace.\n- Prefer AMS\u0027s process_state_died over the kernel exit / AppExitInfo\n  process_died, which can be seen a pass early (crash) or seconds late.\n- Time-varying service/provider hosts (service_create, restarts), FGS\n  start/type-change/stop, binding flag updates and provider stable \u003c-\u003e\n  unstable connection updates.\n- Keep services/providers that are not running but still have live\n  connections (bound before creation or after destroy) unhosted, and\n  stop resurrecting records from same-pass bind mutations.\n- Causal trigger table with service_id / bind_id / intent_bind_id /\n  provider_id linking columns; process_state_died is a trigger.\n\nUI (com.android.ProcessState):\n- Binding graph explorer, By-reason grouping, trigger details with\n  linking ids, resizable drawer split.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "51d276963f05ce6a95a589092c9f4404564e4fe3",
      "old_mode": 33188,
      "old_path": "protos/third_party/android/frameworks/base/proto/tracing/frameworks_base_trace_packet.proto",
      "new_id": "cae7a462bff9e045c21515988fdda412aa1ed745",
      "new_mode": 33188,
      "new_path": "protos/third_party/android/frameworks/base/proto/tracing/frameworks_base_trace_packet.proto"
    },
    {
      "type": "modify",
      "old_id": "55b6534946f3f3d5154b022ad70bd09c9d9c49a7",
      "old_mode": 33188,
      "old_path": "protos/third_party/android/frameworks/base/proto/tracing/frameworks_base_track_event.proto",
      "new_id": "9fd1286cbf05e08e21e8d06f82db143db4d849c8",
      "new_mode": 33188,
      "new_path": "protos/third_party/android/frameworks/base/proto/tracing/frameworks_base_track_event.proto"
    },
    {
      "type": "modify",
      "old_id": "788d576cc1151bcb7d819e221d37f9b0beeb5c5d",
      "old_mode": 33188,
      "old_path": "src/trace_processor/importers/proto/track_event_event_importer.h",
      "new_id": "96ca1eb404313562b27ae055e28607daab000b84",
      "new_mode": 33188,
      "new_path": "src/trace_processor/importers/proto/track_event_event_importer.h"
    },
    {
      "type": "modify",
      "old_id": "2c8ac139a9763def0028413410f45a5c3369f68b",
      "old_mode": 33188,
      "old_path": "src/trace_processor/perfetto_sql/stdlib/android/process_state.sql",
      "new_id": "db14df8878179ef27fe085a7ee5dbee5514c61d7",
      "new_mode": 33188,
      "new_path": "src/trace_processor/perfetto_sql/stdlib/android/process_state.sql"
    },
    {
      "type": "modify",
      "old_id": "f80fcdc63367c82db3160c4bc2dea15e97b546b5",
      "old_mode": 33188,
      "old_path": "src/trace_processor/plugins/android_process_state/android_process_state.cc",
      "new_id": "28d0c225d9fe0d679dfd1ed53508890e494405d4",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/android_process_state/android_process_state.cc"
    },
    {
      "type": "modify",
      "old_id": "783d6cd802c428ceb756bb7d6059793ed21843b8",
      "old_mode": 33188,
      "old_path": "src/trace_processor/plugins/android_process_state/android_process_state_module.cc",
      "new_id": "c5243f4e6a6214a614c94072f7b02256a6b6e91b",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/android_process_state/android_process_state_module.cc"
    },
    {
      "type": "modify",
      "old_id": "f605cba68c15513b4d96eab95201240c033615f6",
      "old_mode": 33188,
      "old_path": "src/trace_processor/plugins/android_process_state/android_process_state_module.h",
      "new_id": "8f46840965729d3b7004db1bfbb9f0b5810776b4",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/android_process_state/android_process_state_module.h"
    },
    {
      "type": "modify",
      "old_id": "92b2bf103fca9ba2c7aa42c22150a4a07205daaf",
      "old_mode": 33188,
      "old_path": "src/trace_processor/plugins/android_process_state/android_process_state_tracker.cc",
      "new_id": "a85cf037455dedfac4188b9931fa9dd605a498e7",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/android_process_state/android_process_state_tracker.cc"
    },
    {
      "type": "modify",
      "old_id": "10e787b427f3382e557a9accd826e3635e6ca2fd",
      "old_mode": 33188,
      "old_path": "src/trace_processor/plugins/android_process_state/android_process_state_tracker.h",
      "new_id": "5c0793162dece7b7878c9080968d633c4b14afcd",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/android_process_state/android_process_state_tracker.h"
    },
    {
      "type": "modify",
      "old_id": "59c767c623cc643069a9cb7c2ccf0428eae3b443",
      "old_mode": 33188,
      "old_path": "src/trace_processor/plugins/android_process_state/tables.py",
      "new_id": "1fed6c161abd27a43697ea88de8c4d16e7bdb0f8",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/android_process_state/tables.py"
    },
    {
      "type": "modify",
      "old_id": "632d20fc8e31129f2c1c93e4c0a1dab84d0a508b",
      "old_mode": 33188,
      "old_path": "test/trace_processor/diff_tests/parser/android/tests.py",
      "new_id": "d47b9c87a6bbc2a463dba5e2e4e77dececa0fa78",
      "new_mode": 33188,
      "new_path": "test/trace_processor/diff_tests/parser/android/tests.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5c2c64a569e0514f2839347ea6d2487d951f6300",
      "new_mode": 33188,
      "new_path": "ui/src/components/widgets/charts_svg/layered_graph.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "431268db409b8b4ed2e3fb66acb89b9b78d73ef1",
      "new_mode": 33188,
      "new_path": "ui/src/components/widgets/charts_svg/layered_graph.ts"
    },
    {
      "type": "modify",
      "old_id": "178f2f537a3a4d5102e433f38e313d38f2c39f7e",
      "old_mode": 33188,
      "old_path": "ui/src/plugins/com.android.ProcessState/aggregators.ts",
      "new_id": "686292334216144506fd09a11f3fa65ff9134f81",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/aggregators.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "22ca2e18a120d8680e84f40275b1dcaf534a2d90",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/grid_helpers.ts"
    },
    {
      "type": "modify",
      "old_id": "2f29c96a39e5e3a8bff85d2dbf7f562ab31038be",
      "old_mode": 33188,
      "old_path": "ui/src/plugins/com.android.ProcessState/index.ts",
      "new_id": "a52383c1e3fd5cf6efdd8718f2cd6070f67bec6a",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/index.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2a1c925c67078a61399095ee0d95952568219acd",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/process_graph.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "73593d6343c88e59d07bb8fa5936d84f6acc1b86",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/process_state.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6364fdb8efd4ab6c765ba131bf872163116eda22",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/process_state_controller.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "23e7c837d91f9f6adf3970ac6638f322414ea930",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/process_state_details_panel.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a8688b3167422291440ee8bf8961caea6c59887b",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.ProcessState/relations.ts"
    }
  ]
}
