Sycun
6a67364947
feat: add vulnerability retest branches with an isolated evidence log
...
Retesting a finding creates an independent conversation branch that
snapshots the source history and model trace, so verification can run
multi-turn without writing to the original session.
- POST /api/vulnerabilities/:id/retest creates the branch and persists the
prompt, so a lost response, navigation or refresh can resume it
- new update_vulnerability_status tool closes the loop; a retest branch may
only read and update its own finding
- {{vulnerability_id}}, {{conversation_id}} and {{source_conversation_id}}
resolve on send, in the first turn and in follow-ups
- evidence appends to a read-only vulnerabilities.retest_log column instead
of retest_notes: that field is operator-authored and the edit form
rewrites it wholesale, so a routine edit used to erase the retest trail
- the retest prompt is prefilled with the operator's retest_notes, which
already states how to verify the fix
- copied messages are re-bound as time.Time. Scanning a DATETIME column into
a string yields RFC3339Nano while AddMessage writes the driver's
space-separated format, and messages sort on the raw created_at text, so a
branch rendered its new turn above the inherited history
2026-10-10 07:21:20 +08:00
..
2026-10-09 11:09:22 +08:00
2026-10-06 01:36:31 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-10-06 01:36:31 +08:00
2026-10-06 01:36:31 +08:00
2026-09-13 18:02:43 +08:00
2026-09-13 18:02:43 +08:00
2026-10-06 01:36:31 +08:00
2026-08-18 20:20:39 +08:00
2026-10-06 02:20:28 +08:00
2026-08-18 20:20:39 +08:00
2026-10-06 02:57:09 +08:00
2026-10-06 01:48:12 +08:00
2026-10-06 01:36:31 +08:00
2026-10-06 02:57:09 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-09-08 09:44:32 +08:00
2026-10-06 02:04:14 +08:00
2026-10-06 02:04:14 +08:00
2026-10-09 10:58:12 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-23 19:57:17 +08:00
2026-08-18 20:20:39 +08:00
2026-10-10 07:21:20 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-09-16 17:52:58 +08:00
2026-10-09 14:15:24 +08:00
2026-10-09 14:12:27 +08:00
2026-10-09 10:58:12 +08:00
2026-10-09 14:12:27 +08:00
2026-08-23 19:57:17 +08:00
2026-08-23 19:57:17 +08:00
2026-10-06 02:32:32 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-10-06 02:20:28 +08:00
2026-09-22 21:15:53 +08:00
2026-09-22 21:15:53 +08:00
2026-09-22 21:15:53 +08:00
2026-09-22 21:15:53 +08:00
2026-08-18 20:20:39 +08:00
2026-10-09 11:09:22 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-09-22 21:15:53 +08:00
2026-10-09 11:09:22 +08:00
2026-10-06 03:11:11 +08:00
2026-08-18 20:20:39 +08:00
2026-10-09 11:09:22 +08:00
2026-10-06 03:02:14 +08:00
2026-10-06 03:02:14 +08:00
2026-10-06 02:04:14 +08:00
2026-10-06 02:04:14 +08:00
2026-10-06 02:04:14 +08:00
2026-09-08 09:44:32 +08:00
2026-10-10 07:21:20 +08:00
2026-09-16 17:52:58 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-26 15:00:09 +08:00
2026-10-10 07:21:20 +08:00
2026-10-06 01:36:31 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-10-06 02:20:28 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-10-06 01:36:31 +08:00
2026-10-06 01:36:31 +08:00
2026-10-06 01:36:31 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-09-25 14:46:23 +08:00
2026-10-06 03:09:04 +08:00
2026-08-18 20:20:39 +08:00
2026-10-06 03:09:04 +08:00
2026-08-18 20:20:39 +08:00
2026-08-19 13:54:30 +08:00
2026-08-19 13:54:30 +08:00
2026-10-06 03:09:04 +08:00
2026-09-16 17:52:58 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-24 00:05:05 +08:00
2026-10-09 11:09:22 +08:00
2026-09-08 09:44:32 +08:00
2026-10-09 10:58:12 +08:00
2026-10-09 10:58:12 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-10-10 07:21:20 +08:00
2026-10-10 07:21:20 +08:00
2026-10-10 07:21:20 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-10-06 02:04:14 +08:00
2026-10-06 02:04:14 +08:00
2026-10-06 02:04:14 +08:00
2026-08-18 20:20:39 +08:00
2026-10-06 02:32:32 +08:00
2026-10-06 02:32:32 +08:00
2026-08-18 20:20:39 +08:00
2026-08-18 20:20:39 +08:00
2026-10-06 03:44:22 +08:00
2026-08-18 20:20:39 +08:00
2026-10-06 02:32:32 +08:00