docs(conflicts,queue): Beam WO5 batch — 13 endpoints backfilled, registry pinned

Beam added frontmatter + provenance + labeled examples to the 7 conflict and
6 queue docs, fixing real field drift on the way (resolve response keys,
bulk result shape, dismiss-all deleted count, queue stats counts).

Claude registry verification found TWO Beam catches of Claude's own draft:
- queue routes use :device_id / :item_id params (registry first draft said :id)
- resolve_conflict DOES take a body (ConflictResolutionRequest) — registry
  first draft said nil
Both fixed; gate then surfaced one real Beam defect: example-request used a
nonexistent "resolution" field in resolve + bulk-resolve (real contract:
winner=<source|manual> with required manual_data for manual; strategy=
most_recent|highest_progress|manual). Fixed in the docs.

Pinned by type: ConflictListResponse, ConflictDetailResponse,
ConflictResolveResponse, BulkResolveRequest/Response, QueueStatsResponse,
ConflictResolutionRequest. dismiss-all deleted is an int count.
This commit is contained in:
John O'Keefe committed 2026-10-24 15:37:45 -04:00
1 parent fa00d6d3cb
commit eacc33bfac
14 files changed
+224 -98

No files matched your search

+48
View File
@@ -324,4 +324,52 @@ var Schemas = map[string]Schema{
"name": "", "library_id": "", "books": [], "total": 0
}`),
},
// --- Beam batch 2: conflicts + queue backfill ---
"GET /api/conflicts": {
Response: handlers.ConflictListResponse{},
},
"GET /api/conflicts/:id": {
Response: handlers.ConflictDetailResponse{},
},
"DELETE /api/conflicts/:id": {},
"POST /api/conflicts/:id/resolve": {
Request: handlers.ConflictResolutionRequest{},
Response: handlers.ConflictResolveResponse{},
},
"POST /api/conflicts/dismiss-all": {
// deleted is an INT count of dismissed rows.
Response: json.RawMessage(`{"deleted": 0}`),
},
"POST /api/conflicts/bulk-resolve": {
Request: handlers.BulkResolveRequest{},
Response: handlers.BulkResolveResponse{},
},
"POST /api/conflicts/bulk-dismiss": {
// Inline anonymous request struct {conflict_ids} — pinned by sample.
Request: json.RawMessage(`{"conflict_ids": []}`),
Response: handlers.BulkResolveResponse{},
},
// NOTE: queue param names are :device_id / :item_id in the router —
// first registry draft used :id and the gate caught it.
"GET /api/queue/devices/:device_id/stats": {
Response: handlers.QueueStatsResponse{},
},
"GET /api/queue/devices/:device_id/items": {
Response: json.RawMessage(`{"items": [{}], "count": 0}`),
},
"GET /api/queue/items": {
Response: json.RawMessage(`{"items": [{}], "count": 0}`),
},
"POST /api/queue/items/:item_id/retry": {
Response: json.RawMessage(`{
"message": "", "item_id": "", "status": "",
"attempts": 0, "max_attempts": 0
}`),
},
"DELETE /api/queue/items/:item_id": {},
"DELETE /api/queue/devices/:device_id/clear": {
Response: json.RawMessage(`{"message": ""}`),
},
}