feat(workspace,jobs): emit sync_aborted_on_restart audit + enrich worktree.pruned metadata

- workspace.ResetStuckSyncStatuses now returns affected IDs so app.New can record one workspace.sync_aborted_on_restart audit per reset row
- worktree_prune audit metadata gains workspace_id and path alongside existing branch
- updated fakeRepo + integration test for new ResetStuckSyncStatuses signature
- add TestWorktreePrune_AuditMetadataContainsWorkspaceIDAndPath
This commit is contained in:
2026-05-07 10:14:46 +08:00
parent b1ccce567e
commit a2b6d5382e
8 changed files with 110 additions and 22 deletions
+9 -6
View File
@@ -15,11 +15,12 @@ import (
// MainPath come from a JOIN performed in the production adapter (workspace
// + project), not from the worktrees table directly.
type WorktreeRow struct {
ID uuid.UUID
OwnerID uuid.UUID
Branch string
MainPath string
Path string
ID uuid.UUID
WorkspaceID uuid.UUID
OwnerID uuid.UUID
Branch string
MainPath string
Path string
}
// WorktreePruneRepo is the minimal repository surface used by this runner.
@@ -128,7 +129,9 @@ func (r *WorktreePrune) executionPhase(ctx context.Context) {
TargetType: "worktree",
TargetID: w.ID.String(),
Metadata: map[string]any{
"branch": w.Branch,
"workspace_id": w.WorkspaceID.String(),
"branch": w.Branch,
"path": w.Path,
},
}); rerr != nil {
r.log.Warn("worktree_prune.audit_failed", "worktree_id", w.ID, "err", rerr.Error())