)]}'
{
  "commit": "07a952622c2118433c783b1c3bd3fabe68420fc5",
  "tree": "45c6db5cbe3a7cf89d707613d758747da198ce5a",
  "parents": [
    "0cf2d3d207180af6c52af6667caa6c273bd50631"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Mon Oct 19 16:48:15 2026 -0700"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Mon Oct 19 18:27:11 2026 -0700"
  },
  "message": "Back-substitute on NO_CONVERGENCE in SchurComplementSolver\n\nWhen ITERATIVE_SCHUR is used with use_explicit_schur_complement \u003d true, ExplicitSchurComplementSolver inherits from SchurComplementSolver. Previously, SchurComplementSolver::SolveImpl only performed back-substitution when SolveReducedLinearSystem returned SUCCESS. When ConjugateGradientsSolver hit max_num_iterations and returned NO_CONVERGENCE, the eliminated parameter blocks were left at zero instead of being back-substituted from the approximate reduced solution, unlike IterativeSchurComplementSolver.\n\nThanks to @1784174022-ops for reporting this.\n\nFixes https://github.com/ceres-solver/ceres-solver/issues/1215\n\nChange-Id: Ic879f1d6ad429d0ee054f8101c13a858d53b02c4\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4a2fbbad5d9e6b038e260f8a002feb97ca6d67a5",
      "old_mode": 33188,
      "old_path": "internal/ceres/schur_complement_solver.cc",
      "new_id": "76836330780bdb3c22c8ef7de1f989acdffe29b8",
      "new_mode": 33188,
      "new_path": "internal/ceres/schur_complement_solver.cc"
    },
    {
      "type": "modify",
      "old_id": "18b79f38043575536f0b337d180917c9a1559004",
      "old_mode": 33188,
      "old_path": "internal/ceres/schur_complement_solver_test.cc",
      "new_id": "349f6b1aa6c28cb4a321d07399a8ead98760db92",
      "new_mode": 33188,
      "new_path": "internal/ceres/schur_complement_solver_test.cc"
    }
  ]
}
