)]}'
{
  "commit": "eb234a408bfca431a52be96198ae2667c2953e19",
  "tree": "a680c82f40305ef935c2595f755c44ea7dcf6115",
  "parents": [
    "a5ddf0f05a66a521b26995ec75e7e900bb1fb019"
  ],
  "author": {
    "name": "Henner Zeller",
    "email": "h.zeller@acm.org",
    "time": "Mon Aug 03 01:30:55 2026 -0700"
  },
  "committer": {
    "name": "Henner Zeller",
    "email": "h.zeller@acm.org",
    "time": "Mon Aug 03 01:42:03 2026 -0700"
  },
  "message": "Fix strict weak ordering in dependency autoexpand graph\n\nIn case of cyclic dependencies, sorting our graph with a simple\n`DependsOn()` results in issues, as we don\u0027t have a strict weak\nordering anymore.\n\nInstead, prepare a rank look-up table that contains the counts of how many\nother modules in the buffer depend on it. In any DAG, a dependency has\nstrictly more dependents than the module depending on it.\nThe look-up table also provides stable ordering even if we have multiple\ndisconnected graphs as we just compare a topological rank.\n\nUse that rank in the comparator and use the name as tie-breaker in case\nof cyclic dependencies.\n\nThis was discovered by enabling debug mode stdlib which triggered\nstrict weak ordering complaints in tests in\n`verible/verilog/tools/ls/autoexpand_test.cc`\n  `AUTO_ExpandPortsMultipleConnectionsWithAUTO_TEMPLATE`\n  `AUTO_ExpandPorts_DependencyLoop`\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0f9d5c4d26c01bac835a6b3696b9ceb9b4d514f3",
      "old_mode": 33188,
      "old_path": "verible/verilog/tools/ls/autoexpand.cc",
      "new_id": "82f7de0f376fc61c46d5feb9c7b198ecc5fcd35b",
      "new_mode": 33188,
      "new_path": "verible/verilog/tools/ls/autoexpand.cc"
    }
  ]
}
