#6872: classify_shapes(repo=…) and the write-path hook revive a soft-vanished shape row instead of inserting a duplicate that broke uq_code_shapes_identity and lost the whole batch. A concurrent insert of the same identity falls back to the other request's row inside a savepoint.
- #6872: `classify_shapes(repo=…)` and the write-path hook revive a soft-vanished shape row instead of inserting a duplicate that broke `uq_code_shapes_identity` and lost the whole batch. A concurrent insert of the same identity falls back to the other request's row inside a savepoint.
CI run 10253 green on dev 6be4401.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
classify_shapes(repo=...) and the write-path hook looked only at live rows,
so a shape whose row had vanished got a second provisional row under the
same (project, repo, path, symbol, kind). The unique constraint refused it,
and the whole classify batch was lost as a tool error.
provisional_row() now finds the row under that identity, vanished or not.
A vanished row is revived with a reappeared event and keeps its judgment.
A new row is inserted inside a savepoint, so a concurrent insert of the
same identity falls back to that row instead of failing the transaction.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
classify_shapes(repo=…)and the write-path hook revive a soft-vanished shape row instead of inserting a duplicate that brokeuq_code_shapes_identityand lost the whole batch. A concurrent insert of the same identity falls back to the other request's row inside a savepoint.CI run 10253 green on dev
6be4401.🤖 Generated with Claude Code