[{"data":1,"prerenderedAt":6354},["ShallowReactive",2],{"docs-navigation":3,"docs\u002Fdocs\u002Freference\u002Fapi":194,"docs\u002Fdocs\u002Freference\u002Fapi-surround":6349},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,13,35,129,149,154],{"title":10,"path":6,"stem":11,"icon":12},"Overview","docs\u002Findex","i-lucide-house",{"title":14,"icon":15,"path":16,"stem":17,"children":18,"page":34},"Quickstart","i-lucide-rocket","\u002Fdocs\u002Fquickstart","docs\u002F1.quickstart",[19,24,29],{"title":20,"path":21,"stem":22,"icon":23},"Local","\u002Fdocs\u002Fquickstart\u002Flocal","docs\u002F1.quickstart\u002F1.local","i-lucide-laptop",{"title":25,"path":26,"stem":27,"icon":28},"Self-hosted","\u002Fdocs\u002Fquickstart\u002Fself-hosted","docs\u002F1.quickstart\u002F2.self-hosted","i-lucide-server",{"title":30,"path":31,"stem":32,"icon":33},"Cloud","\u002Fdocs\u002Fquickstart\u002Fcloud","docs\u002F1.quickstart\u002F3.cloud","i-lucide-cloud",false,{"title":36,"path":37,"stem":38,"children":39,"icon":41},"Harnesses","\u002Fdocs\u002Fharnesses","docs\u002F2.harnesses\u002Findex",[40,42,47,51,55,59,63,67,71,76,80,84,89,93,97,101,105,109,113,117,121,125],{"title":36,"path":37,"stem":38,"icon":41},"i-lucide-plug",{"title":43,"path":44,"stem":45,"icon":46},"Claude Code","\u002Fdocs\u002Fharnesses\u002Fclaude-code","docs\u002F2.harnesses\u002F1.claude-code","i-lucide-terminal",{"title":48,"path":49,"stem":50,"icon":46},"Devin","\u002Fdocs\u002Fharnesses\u002Fdevin","docs\u002F2.harnesses\u002F10.devin",{"title":52,"path":53,"stem":54,"icon":46},"Kiro","\u002Fdocs\u002Fharnesses\u002Fkiro","docs\u002F2.harnesses\u002F11.kiro",{"title":56,"path":57,"stem":58,"icon":46},"Cline","\u002Fdocs\u002Fharnesses\u002Fcline","docs\u002F2.harnesses\u002F12.cline",{"title":60,"path":61,"stem":62,"icon":46},"Amp","\u002Fdocs\u002Fharnesses\u002Famp","docs\u002F2.harnesses\u002F13.amp",{"title":64,"path":65,"stem":66,"icon":46},"VS Code","\u002Fdocs\u002Fharnesses\u002Fvscode","docs\u002F2.harnesses\u002F14.vscode",{"title":68,"path":69,"stem":70,"icon":46},"Gemini CLI","\u002Fdocs\u002Fharnesses\u002Fgemini-cli","docs\u002F2.harnesses\u002F15.gemini-cli",{"title":72,"path":73,"stem":74,"icon":75},"OpenClaw","\u002Fdocs\u002Fharnesses\u002Fopenclaw","docs\u002F2.harnesses\u002F16.openclaw","i-lucide-puzzle",{"title":77,"path":78,"stem":79,"icon":75},"Hermes Agent","\u002Fdocs\u002Fharnesses\u002Fhermes","docs\u002F2.harnesses\u002F17.hermes",{"title":81,"path":82,"stem":83,"icon":75},"NanoClaw","\u002Fdocs\u002Fharnesses\u002Fnanoclaw","docs\u002F2.harnesses\u002F18.nanoclaw",{"title":85,"path":86,"stem":87,"icon":88},"skills.sh (`npx skills`)","\u002Fdocs\u002Fharnesses\u002Fskills-sh","docs\u002F2.harnesses\u002F19.skills-sh","i-lucide-store",{"title":90,"path":91,"stem":92,"icon":46},"Codex CLI","\u002Fdocs\u002Fharnesses\u002Fcodex","docs\u002F2.harnesses\u002F2.codex",{"title":94,"path":95,"stem":96,"icon":88},"Claude Code plugin marketplace","\u002Fdocs\u002Fharnesses\u002Fclaude-code-marketplace","docs\u002F2.harnesses\u002F20.claude-code-marketplace",{"title":98,"path":99,"stem":100,"icon":88},"Codex plugin marketplace","\u002Fdocs\u002Fharnesses\u002Fcodex-marketplace","docs\u002F2.harnesses\u002F21.codex-marketplace",{"title":102,"path":103,"stem":104,"icon":46},"Cursor","\u002Fdocs\u002Fharnesses\u002Fcursor","docs\u002F2.harnesses\u002F3.cursor",{"title":106,"path":107,"stem":108,"icon":46},"OpenCode V1","\u002Fdocs\u002Fharnesses\u002Fopencode-v1","docs\u002F2.harnesses\u002F4.opencode-v1",{"title":110,"path":111,"stem":112,"icon":46},"OpenCode 2","\u002Fdocs\u002Fharnesses\u002Fopencode-v2","docs\u002F2.harnesses\u002F5.opencode-v2",{"title":114,"path":115,"stem":116,"icon":46},"Oh My Pi (omp)","\u002Fdocs\u002Fharnesses\u002Fomp","docs\u002F2.harnesses\u002F6.omp",{"title":118,"path":119,"stem":120,"icon":46},"Pi","\u002Fdocs\u002Fharnesses\u002Fpi","docs\u002F2.harnesses\u002F7.pi",{"title":122,"path":123,"stem":124,"icon":46},"Copilot CLI","\u002Fdocs\u002Fharnesses\u002Fcopilot","docs\u002F2.harnesses\u002F8.copilot",{"title":126,"path":127,"stem":128,"icon":46},"Antigravity","\u002Fdocs\u002Fharnesses\u002Fantigravity","docs\u002F2.harnesses\u002F9.antigravity",{"title":130,"icon":131,"path":132,"stem":133,"children":134,"page":34},"Concepts","i-lucide-lightbulb","\u002Fdocs\u002Fconcepts","docs\u002F3.concepts",[135,140,145],{"title":136,"path":137,"stem":138,"icon":139},"Reports","\u002Fdocs\u002Fconcepts\u002Freports","docs\u002F3.concepts\u002F1.reports","i-lucide-file-text",{"title":141,"path":142,"stem":143,"icon":144},"Triage","\u002Fdocs\u002Fconcepts\u002Ftriage","docs\u002F3.concepts\u002F2.triage","i-lucide-list-checks",{"title":146,"path":147,"stem":148,"icon":41},"Model and harness independence","\u002Fdocs\u002Fconcepts\u002Fmodel-and-harness-independence","docs\u002F3.concepts\u002F3.model-and-harness-independence",{"title":150,"path":151,"stem":152,"icon":153},"Security","\u002Fdocs\u002Fsecurity","docs\u002F4.security","i-lucide-shield-check",{"title":155,"path":156,"stem":157,"children":158,"icon":160},"Reference","\u002Fdocs\u002Freference","docs\u002F5.reference\u002Findex",[159,161,166,171,174,179,184,189],{"title":155,"path":156,"stem":157,"icon":160},"i-lucide-book-open",{"title":162,"path":163,"stem":164,"icon":165},"API","\u002Fdocs\u002Freference\u002Fapi","docs\u002F5.reference\u002F1.api","i-lucide-braces",{"title":167,"path":168,"stem":169,"icon":170},"Operations","\u002Fdocs\u002Freference\u002Foperate","docs\u002F5.reference\u002F2.operate","i-lucide-settings",{"title":150,"path":172,"stem":173,"icon":153},"\u002Fdocs\u002Freference\u002Fsecurity","docs\u002F5.reference\u002F3.security",{"title":175,"path":176,"stem":177,"icon":178},"Session logs","\u002Fdocs\u002Freference\u002Fsessions","docs\u002F5.reference\u002F4.sessions","i-lucide-history",{"title":180,"path":181,"stem":182,"icon":183},"Releases","\u002Fdocs\u002Freference\u002Freleases","docs\u002F5.reference\u002F5.releases","i-lucide-tags",{"title":185,"path":186,"stem":187,"icon":188},"Client installation","\u002Fdocs\u002Freference\u002Fagent-install","docs\u002F5.reference\u002F6.agent-install","i-lucide-download",{"title":190,"path":191,"stem":192,"icon":193},"Stack installation","\u002Fdocs\u002Freference\u002Fagent-install-stack","docs\u002F5.reference\u002F7.agent-install-stack","i-lucide-container",{"id":195,"title":196,"body":197,"description":6342,"extension":6343,"meta":6344,"navigation":6345,"path":163,"seo":6346,"stem":164,"verified":6347,"__hash__":6348},"docs\u002Fdocs\u002F5.reference\u002F1.api.md","AgentFeedback HTTP API",{"type":198,"value":199,"toc":6315},"minimark",[200,230,243,246,356,360,380,395,402,405,456,683,686,743,747,757,897,918,933,936,1021,1052,1087,1174,1177,1226,1230,1234,1239,1304,1523,1530,1805,1814,1862,2160,2166,2298,2301,2345,2348,2353,2385,2560,2731,2817,2820,2835,2865,3089,3133,3137,3143,3195,3264,3538,3631,3635,3648,3699,3746,3798,3811,3814,3858,3893,4024,4027,4041,4071,4333,4397,4400,4416,4452,4485,4493,4571,4577,4580,4589,4642,4758,4829,4832,4841,4859,4948,4968,4986,4989,5002,5032,5350,5353,5362,5380,5383,5418,5478,5583,5589,5687,5746,5749,5774,5792,5795,5800,5818,5943,5947,5950,5971,5992,6013,6019,6022,6038,6134,6138,6141,6305,6308,6311],[201,202,203,204,211,212,220,221,224,225,229],"p",{},"The HTTP API of an AgentFeedback server: write-once submissions from AI\nagents, their processing marks, aggregates, export and import, schemas,\nremote MCP and discovery. This page is the narrative. The contract is\n",[205,206,210],"a",{"href":207,"rel":208},"https:\u002F\u002Fgithub.com\u002FAgentFeedback\u002Fagentfeedback\u002Fblob\u002Fc7573e1b301aa1495f290c417ce2fb390caee544\u002Fdocs\u002Fopenapi.yaml",[209],"nofollow","openapi.yaml",", the JSON Schemas under ",[205,213,216],{"href":214,"rel":215},"https:\u002F\u002Fgithub.com\u002FAgentFeedback\u002Fagentfeedback\u002Ftree\u002Fc7573e1b301aa1495f290c417ce2fb390caee544\u002Fschemas",[209],[217,218,219],"code",{},"schemas\u002F","\nand the conformance kit under ",[217,222,223],{},"conformance\u002F"," in the repository; they\nwin wherever this page disagrees, and they hold the field-by-field tables.\nHosted issue extensions are described ",[205,226,228],{"href":227},"#hosted-issue-operations","separately below",";\nthe selected backend's served OpenAPI advertises their availability, not the\nbundled base contract.",[201,231,232,233,237,238,242],{},"API version: ",[234,235,236],"strong",{},"1.0",". Changes since 1.0 are listed under ",[205,239,241],{"href":240},"#changes","Changes",".",[201,244,245],{},"Contents:",[247,248,249,256,262,272,341,352],"ol",{},[250,251,252],"li",{},[205,253,255],{"href":254},"#who-needs-http","Who needs HTTP",[250,257,258],{},[205,259,261],{"href":260},"#base-url-auth-common-rules","Base URL, auth, common rules",[250,263,264,268,269],{},[205,265,267],{"href":266},"#submissions","Submissions",": envelope, identity, warnings; ",[205,270,271],{"href":227},"hosted issue operations",[250,273,274,275,279,280,279,284,288,289,279,293,279,297,288,301,279,305,279,309,288,313,279,317,279,321,288,325,279,329,279,333,288,337],{},"Routes: ",[205,276,278],{"href":277},"#create","create",", ",[205,281,283],{"href":282},"#list","list",[205,285,287],{"href":286},"#get","get",",\n",[205,290,292],{"href":291},"#mark-one","mark one",[205,294,296],{"href":295},"#mark-a-batch","mark a batch",[205,298,300],{"href":299},"#redact","redact",[205,302,304],{"href":303},"#stats","stats",[205,306,308],{"href":307},"#export","export",[205,310,312],{"href":311},"#import","import",[205,314,316],{"href":315},"#schemas","schemas",[205,318,320],{"href":319},"#meta","meta",[205,322,324],{"href":323},"#openapi-document","OpenAPI document",[205,326,328],{"href":327},"#mcp","MCP",[205,330,332],{"href":331},"#skill","skill",[205,334,336],{"href":335},"#discovery","discovery",[205,338,340],{"href":339},"#health-ready-metrics","health, ready, metrics",[250,342,343,347,348],{},[205,344,346],{"href":345},"#evolution-policy","Evolution policy"," and ",[205,349,351],{"href":350},"#version-axes","version axes",[250,353,354],{},[205,355,241],{"href":240},[357,358,255],"h2",{"id":359},"who-needs-http",[201,361,362,363,366,367,370,371,375,376,379],{},"The ",[217,364,365],{},"agentfeedback"," CLI and its stdio MCP tools (",[217,368,369],{},"agentfeedback mcp",") are the\nnormal base-API clients, and they need no server: in local mode they run the same\nhandler in-process on the data-directory database\n(",[205,372,374],{"href":373},"\u002Fdocs\u002Freference\u002Foperate#local-mode-no-server","operate.md","). HTTP is for a server started\nwith ",[217,377,378],{},"agentfeedback serve",", and for producers that cannot run the binary.",[201,381,382,383,388,389,394],{},"Hand-written calls follow the generated recipes\n",[205,384,387],{"href":385,"rel":386},"https:\u002F\u002Fgithub.com\u002FAgentFeedback\u002Fagentfeedback\u002Fblob\u002Fc7573e1b301aa1495f290c417ce2fb390caee544\u002Fdocs\u002Frecipes\u002Fhttp-curl.md",[209],"recipes\u002Fhttp-curl.md"," and\n",[205,390,393],{"href":391,"rel":392},"https:\u002F\u002Fgithub.com\u002FAgentFeedback\u002Fagentfeedback\u002Fblob\u002Fc7573e1b301aa1495f290c417ce2fb390caee544\u002Fdocs\u002Frecipes\u002Fhttp-powershell.md",[209],"recipes\u002Fhttp-powershell.md","; they need a shell or\nan HTTP tool that can set a request header.",[201,396,397,398],{},"The v3 HTTP API of releases before 4.0.0 is documented at the v3.0.0 tag:\n",[205,399,400],{"href":400,"rel":401},"https:\u002F\u002Fgithub.com\u002FAgentFeedback\u002Fagentfeedback\u002Fblob\u002Fv3.0.0\u002Fdocs\u002Fapi.md",[209],[357,403,261],{"id":404},"base-url-auth-common-rules",[406,407,412],"pre",{"className":408,"code":409,"language":410,"meta":411,"style":411},"language-bash shiki shiki-themes github-light github-light github-dark","export AGENT_FEEDBACK_URL=http:\u002F\u002F127.0.0.1:8090    # the server's base URL\nexport AGENT_FEEDBACK_API_KEY=\u003Ckey>                # the server's API_KEY\n","bash","",[217,413,414,436],{"__ignoreMap":411},[415,416,419,422,426,429,432],"span",{"class":417,"line":418},"line",1,[415,420,308],{"class":421},"s8jYJ",[415,423,425],{"class":424},"sxrX7"," AGENT_FEEDBACK_URL",[415,427,428],{"class":421},"=",[415,430,431],{"class":424},"http:\u002F\u002F127.0.0.1:8090    ",[415,433,435],{"class":434},"sCsY4","# the server's base URL\n",[415,437,439,441,444,447,450,453],{"class":417,"line":438},2,[415,440,308],{"class":421},[415,442,443],{"class":424}," AGENT_FEEDBACK_API_KEY",[415,445,446],{"class":421},"=\u003C",[415,448,449],{"class":424},"key",[415,451,452],{"class":421},">",[415,454,455],{"class":434},"                # the server's API_KEY\n",[457,458,459,513,526,546,621,645,674],"ul",{},[250,460,461,464,465,468,469,472,473,476,477,480,481,279,484,288,487,279,490,288,493,279,496,279,499,288,502,505,506,509,510,242],{},[234,462,463],{},"Auth."," Send the key in either header; either authorises and neither\nshadows the other:\n",[217,466,467],{},"Authorization: Bearer $AGENT_FEEDBACK_API_KEY"," (scheme name\ncase-insensitive) or ",[217,470,471],{},"X-Api-Key: $AGENT_FEEDBACK_API_KEY",". Every\n",[217,474,475],{},"\u002Fapi\u002Fv1\u002F*"," route and ",[217,478,479],{},"\u002Fmcp"," need it, except these, which need no key and\ncarry no data: ",[217,482,483],{},"GET \u002Fapi\u002Fv1\u002Fschemas",[217,485,486],{},"GET \u002Fapi\u002Fv1\u002Fschemas\u002F{kind}\u002F{version}",[217,488,489],{},"GET \u002Fapi\u002Fv1\u002Fopenapi.json",[217,491,492],{},"GET \u002Fskill",[217,494,495],{},"GET \u002F.well-known\u002Fagentfeedback.json",[217,497,498],{},"GET \u002Fhealth",[217,500,501],{},"GET \u002Fready",[217,503,504],{},"GET \u002Fmetrics",". A missing or wrong key is 401 ",[217,507,508],{},"unauthorized"," with\n",[217,511,512],{},"WWW-Authenticate: Bearer",[250,514,515,518,519,522,523,242],{},[234,516,517],{},"Headers."," Every response carries ",[217,520,521],{},"X-Request-Id",". Every response of an\nauthenticated route, success or error, carries ",[217,524,525],{},"Cache-Control: no-store",[250,527,528,531,532,535,536,538,539,542,543,242],{},[234,529,530],{},"Body limits."," Create, mark and batch mark: 10485760 bytes\n(",[217,533,534],{},"limits.body_bytes"," in ",[205,537,320],{"href":319},"). Import: 33554432 bytes\n(",[217,540,541],{},"limits.import_bytes","). MCP: 10551296 bytes. Over the limit is 413\n",[217,544,545],{},"request_too_large",[250,547,548,551,552,555,556,559,560,563,564,567,568,570,571,574,575,279,577,288,580,582,583,586,587,590,591,555,594,597,598,601,602,605,606,609,610,613,614,617,618,620],{},[234,549,550],{},"Errors."," ",[217,553,554],{},"application\u002Fjson"," with ",[217,557,558],{},"error"," (a code from a closed list),\n",[217,561,562],{},"message"," (names the field or parameter, the value received when short,\nand the accepted range), ",[217,565,566],{},"request_id"," (equals ",[217,569,521],{},") and, when\nthere is something to point at, ",[217,572,573],{},"details",": items of ",[217,576,217],{},[217,578,579],{},"pointer",[217,581,562],{},". This is the ",[217,584,585],{},"Error"," schema in\n",[205,588,210],{"href":207,"rel":589},[209],", not RFC 9457 problem details. A wrong\nmethod is 405 ",[217,592,593],{},"method_not_allowed",[217,595,596],{},"Allow","; an unknown path under\n",[217,599,600],{},"\u002Fapi\u002Fv1\u002F"," is 404 ",[217,603,604],{},"not_found",". ",[217,607,608],{},"rate_limited"," (429, with ",[217,611,612],{},"Retry-After",")\noccurs on the hosted service only; ",[217,615,616],{},"unavailable"," (503) carries\n",[217,619,612],{}," when known.",[250,622,623,626,627,630,631,288,634,279,637,640,641,644],{},[234,624,625],{},"Timestamps."," Every timestamp the server writes is RFC 3339 UTC with six\nfractional digits, e.g. ",[217,628,629],{},"2026-09-27T10:00:01.123456Z",". Inputs (",[217,632,633],{},"since",[217,635,636],{},"until",[217,638,639],{},"occurred_at",") accept any RFC 3339 offset; percent-encode ",[217,642,643],{},"+"," in\na query string.",[250,646,647,650,651,279,654,288,657,279,660,279,663,666,667,670,671,673],{},[234,648,649],{},"Write-once."," Content is never modified after creation. The only fields\nthat change are the five processing fields (",[217,652,653],{},"processed_at",[217,655,656],{},"verdict",[217,658,659],{},"resolution",[217,661,662],{},"ref",[217,664,665],{},"processed_by","), set by ",[205,668,669],{"href":291},"marking",", and\nredaction, which replaces content with a tombstone (",[205,672,300],{"href":299},").",[250,675,676,679,680,242],{},[234,677,678],{},"Optional members"," of a record are omitted when unset, never sent as\n",[217,681,682],{},"null",[201,684,685],{},"Example error, a key missing:",[406,687,691],{"className":688,"code":689,"language":690,"meta":411,"style":411},"language-json shiki shiki-themes github-light github-light github-dark","{\n  \"error\": \"unauthorized\",\n  \"message\": \"missing or invalid API key; send Authorization: Bearer \u003Ckey> or X-Api-Key: \u003Ckey>\",\n  \"request_id\": \"02c20310252d79435a7d839aa39802e3\"\n}\n","json",[217,692,693,698,713,726,737],{"__ignoreMap":411},[415,694,695],{"class":417,"line":418},[415,696,697],{"class":424},"{\n",[415,699,700,704,707,711],{"class":417,"line":438},[415,701,703],{"class":702},"sBjJW","  \"error\"",[415,705,706],{"class":424},": ",[415,708,710],{"class":709},"sIIMD","\"unauthorized\"",[415,712,288],{"class":424},[415,714,716,719,721,724],{"class":417,"line":715},3,[415,717,718],{"class":702},"  \"message\"",[415,720,706],{"class":424},[415,722,723],{"class":709},"\"missing or invalid API key; send Authorization: Bearer \u003Ckey> or X-Api-Key: \u003Ckey>\"",[415,725,288],{"class":424},[415,727,729,732,734],{"class":417,"line":728},4,[415,730,731],{"class":702},"  \"request_id\"",[415,733,706],{"class":424},[415,735,736],{"class":709},"\"02c20310252d79435a7d839aa39802e3\"\n",[415,738,740],{"class":417,"line":739},5,[415,741,742],{"class":424},"}\n",[357,744,746],{"id":745},"hosted-issue-operations","Hosted issue operations",[201,748,749,752,753,242],{},[217,750,751],{},"agentfeedback issues"," is a client of the hosted canonical issue service,\nnot a new local grouping engine or an extension to the base six MCP tools.\nThe base API 1.0 submission envelope, immutable source content, processing\nmarks and import\u002Fexport remain unchanged. For command syntax, bounded read\nfilters, paging, mutation bodies and evidence rules, use\n",[205,754,756],{"href":755},"\u002Fdocs\u002Freference\u002Foperate#canonical-issues","Canonical issues",[758,759,760,773],"table",{},[761,762,763],"thead",{},[764,765,766,770],"tr",{},[767,768,769],"th",{},"CLI operation",[767,771,772],{},"Required advertised HTTP operation",[774,775,776,789,801,813,825,837,849,861,873,885],"tbody",{},[764,777,778,784],{},[779,780,781],"td",{},[217,782,783],{},"issues list",[779,785,786],{},[217,787,788],{},"GET \u002Fapi\u002Fv1\u002Fissues",[764,790,791,796],{},[779,792,793],{},[217,794,795],{},"issues rank",[779,797,798],{},[217,799,800],{},"GET \u002Fapi\u002Fv1\u002Fissues\u002Frank",[764,802,803,808],{},[779,804,805],{},[217,806,807],{},"issues detail \u003CUUID>",[779,809,810],{},[217,811,812],{},"GET \u002Fapi\u002Fv1\u002Fissues\u002F{issue_id}",[764,814,815,820],{},[779,816,817],{},[217,818,819],{},"issues source-reports \u003CUUID>",[779,821,822],{},[217,823,824],{},"GET \u002Fapi\u002Fv1\u002Fissues\u002F{issue_id}\u002Fsource-reports",[764,826,827,832],{},[779,828,829],{},[217,830,831],{},"issues prompt \u003CUUID>",[779,833,834],{},[217,835,836],{},"GET \u002Fapi\u002Fv1\u002Fissues\u002F{issue_id}\u002Fprompt",[764,838,839,844],{},[779,840,841],{},[217,842,843],{},"issues correct \u003CUUID>",[779,845,846],{},[217,847,848],{},"PATCH \u002Fapi\u002Fv1\u002Fissues\u002F{issue_id}",[764,850,851,856],{},[779,852,853],{},[217,854,855],{},"issues merge \u003CUUID>",[779,857,858],{},[217,859,860],{},"POST \u002Fapi\u002Fv1\u002Fissues\u002F{issue_id}\u002Fmerge",[764,862,863,868],{},[779,864,865],{},[217,866,867],{},"issues split \u003CUUID>",[779,869,870],{},[217,871,872],{},"POST \u002Fapi\u002Fv1\u002Fissues\u002F{issue_id}\u002Fsplit",[764,874,875,880],{},[779,876,877],{},[217,878,879],{},"issues record-outcome \u003CUUID>",[779,881,882],{},[217,883,884],{},"POST \u002Fapi\u002Fv1\u002Fissues\u002F{issue_id}\u002Foutcomes",[764,886,887,892],{},[779,888,889],{},[217,890,891],{},"issues recheck \u003CUUID>",[779,893,894],{},[217,895,896],{},"POST \u002Fapi\u002Fv1\u002Fissues\u002F{issue_id}\u002Frecheck",[201,898,899,900,903,904,906,907,910,911,388,914,917],{},"Before an issue operation, the CLI makes an authenticated\n",[217,901,902],{},"GET \u002Fapi\u002Fv1\u002Fmeta"," using the selected destination and key, then reads\n",[217,905,489],{},". Authentication, authorization, transport,\nservice and discovery-document failures (including a missing OpenAPI\ndocument) remain those failures; they are never evidence that issues are\nunsupported. After successful discovery the exact path structure ",[234,908,909],{},"and\nverb"," must be advertised; path parameter names such as ",[217,912,913],{},"{id}",[217,915,916],{},"{issue_id}"," are equivalent. Recheck is gated independently of the other\nissue operations and is pending on the hosted service; support for prompt,\ncorrection or outcomes does not imply support for recheck.",[201,919,920,921,924,925,928,929,932],{},"Local mode and the bundled self-hosted server advertise no issue routes\nand therefore report unsupported, not an empty issue set. The client never\nswitches backends or synthesizes results from base submissions. An\nadvertised route's ",[217,922,923],{},"404 not_found"," remains a not-found response, including\nunknown or foreign issue\u002Fsource\u002Fevidence IDs; it does not revoke the\ncapability. Hosted reads require a ",[217,926,927],{},"read","-scoped key and mutations require\n",[217,930,931],{},"process","; the base self-hosted key model is unchanged.",[357,934,267],{"id":935},"submissions",[201,937,938,939,944,945,279,948,279,951,288,953,279,956,279,959,279,962,279,965,279,968,279,970,973,974,977,978,980,981,288,988,995,996,288,999,1002,1003,279,1006,1009,1010,1013,1014,1017,1018,673],{},"A submission is any JSON object. The server never rejects a body for its\nshape: the ",[205,940,943],{"href":941,"rel":942},"https:\u002F\u002Fgithub.com\u002FAgentFeedback\u002Fagentfeedback\u002Fblob\u002Fc7573e1b301aa1495f290c417ce2fb390caee544\u002Fschemas\u002Fenvelope.v1.json",[209],"envelope schema"," describes what is\nstored after inference, and deviations are normalised and reported as\nwarnings. The envelope members are ",[217,946,947],{},"kind",[217,949,950],{},"schema_version",[217,952,449],{},[217,954,955],{},"summary",[217,957,958],{},"machine",[217,960,961],{},"model",[217,963,964],{},"harness",[217,966,967],{},"project",[217,969,639],{},[217,971,972],{},"context","\nand ",[217,975,976],{},"payload","; ",[217,979,976],{}," is validated as a guide against the kind schema when\nthe server ships one (",[205,982,985],{"href":983,"rel":984},"https:\u002F\u002Fgithub.com\u002FAgentFeedback\u002Fagentfeedback\u002Fblob\u002Fc7573e1b301aa1495f290c417ce2fb390caee544\u002Fschemas\u002Fkinds\u002Ffriction.v1.json",[209],[217,986,987],{},"friction",[205,989,992],{"href":990,"rel":991},"https:\u002F\u002Fgithub.com\u002FAgentFeedback\u002Fagentfeedback\u002Fblob\u002Fc7573e1b301aa1495f290c417ce2fb390caee544\u002Fschemas\u002Fkinds\u002Freview.v1.json",[209],[217,993,994],{},"review","). The stored record adds ",[217,997,998],{},"id",[217,1000,1001],{},"uid"," (a UUIDv7), ",[217,1004,1005],{},"content_hash",[217,1007,1008],{},"created_at",", the processing fields and\n",[217,1011,1012],{},"redacted_at"," (the ",[217,1015,1016],{},"Submission"," schema in ",[205,1019,210],{"href":207,"rel":1020},[209],[201,1022,1023,1026,1027,1030,1031,1033,1034,1036,1037,1039,1040,1043,1044,1047,1048,1051],{},[234,1024,1025],{},"Decoding and inference."," Only four bodies are rejected: over 10485760\nbytes (413), not JSON (400 ",[217,1028,1029],{},"bad_request","), JSON but not an object (400),\nnesting deeper than 512 levels (400). Everything else is stored: an unknown\ntop-level member moves into ",[217,1032,976],{},", an absent ",[217,1035,976],{}," is built from the\nmoved members, a missing ",[217,1038,947],{}," becomes ",[217,1041,1042],{},"unknown",", over-long strings are\ntruncated, an envelope member of the wrong type is encoded into a string\n(",[217,1045,1046],{},"coerced","), and a payload that fails its kind schema is kept as sent, with\nwarnings. The ordered rules, the normalisation\nsteps and the fixtures every implementation must pass are in\n",[217,1049,1050],{},"conformance\u002FREADME.md"," (\"The write path\").",[201,1053,1054,551,1057,1059,1060,288,1062,279,1064,279,1066,279,1068,279,1070,279,1072,388,1074,1076,1077,1079,1080,279,1082,347,1084,1086],{},[234,1055,1056],{},"Identity.",[217,1058,1005],{}," is the SHA-256 of the canonical JSON of ",[217,1061,947],{},[217,1063,950],{},[217,1065,958],{},[217,1067,961],{},[217,1069,964],{},[217,1071,967],{},[217,1073,955],{},[217,1075,976],{}," after inference (",[217,1078,1050],{},", \"Identity\").\n",[217,1081,449],{},[217,1083,639],{},[217,1085,972],{}," are outside identity. A create answers:",[758,1088,1089,1099],{},[761,1090,1091],{},[764,1092,1093,1096],{},[767,1094,1095],{},"Case",[767,1097,1098],{},"Status",[774,1100,1101,1113,1132,1153],{},[764,1102,1103,1106],{},[779,1104,1105],{},"new record",[779,1107,1108,1109,1112],{},"201, ",[217,1110,1111],{},"Location"," of the new record",[764,1114,1115,1126],{},[779,1116,1117,1119,1120,1122,1123,1125],{},[217,1118,449],{}," already stored under the same ",[217,1121,947],{}," with the same ",[217,1124,1005],{}," (keyed replay)",[779,1127,1128,1129,1131],{},"200, ",[217,1130,1111],{}," and body of the existing record",[764,1133,1134,1150],{},[779,1135,1136,1137,1139,1140,1142,1143,1146,1147,1149],{},"no ",[217,1138,449],{},", and an unprocessed record with the same ",[217,1141,1005],{}," was created within ",[217,1144,1145],{},"dedupe_window_s"," (86400 s, in ",[205,1148,320],{"href":319},")",[779,1151,1152],{},"200, the existing record (keyless duplicate)",[764,1154,1155,1164],{},[779,1156,1157,1119,1159,1161,1162],{},[217,1158,449],{},[217,1160,947],{}," with a different ",[217,1163,1005],{},[779,1165,1166,1167,977,1170,1173],{},"409 ",[217,1168,1169],{},"replay_mismatch",[217,1171,1172],{},"details[0].existing_id"," names the stored record",[201,1175,1176],{},"A keyless duplicate of a processed record, or one outside the window, is a\nnew record: a recurring problem files again after triage. A keyed replay of a\nredacted record still answers 200 with the tombstone, because the hash is\nkept.",[201,1178,1179,1182,1183,1186,1187,279,1189,1191,1192,1194,1195,1198,1199,1202,1203,388,1205,1207,1208,1211,1212,1215,1216,1219,1220,1222,1223,1225],{},[234,1180,1181],{},"Warnings."," A create returns ",[217,1184,1185],{},"warnings"," beside the stored record: items of\n",[217,1188,217],{},[217,1190,579],{}," (an RFC 6901 pointer into the stored record) and ",[217,1193,562],{},".\nWarnings are never stored and never reject. The closed list of codes, one\nexample each, is ",[217,1196,1197],{},"conformance\u002Fwarnings.json"," in the repository. The list is\nbounded: at most ",[217,1200,1201],{},"limits.warnings_max"," entries (100) whose ",[217,1204,217],{},[217,1206,579],{}," together stay within ",[217,1209,1210],{},"limits.warnings_bytes"," (65536); messages are\nadvisory and outside the budget. A list that fits is returned as the decoder\nproduced it; one that does not is cut to the first entries in pointer order\n(then code, then message) and closed by one ",[217,1213,1214],{},"warnings_truncated"," entry at the\nrecord pointer ",[217,1217,1218],{},"\"\""," whose message counts the withheld ones; the closing entry\ncounts against both bounds. A pointer is never shortened. On import the same\nbound applies per record, and the response's ",[217,1221,1185],{}," is bounded the same\nway in line order, with ",[217,1224,417],{}," naming the first withheld line.",[357,1227,1229],{"id":1228},"routes","Routes",[1231,1232,1233],"h3",{"id":278},"Create",[201,1235,1236],{},[217,1237,1238],{},"POST \u002Fapi\u002Fv1\u002Fsubmissions",[406,1240,1242],{"className":408,"code":1241,"language":410,"meta":411,"style":411},"curl -sS -X POST \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fsubmissions\" \\\n  -H \"Authorization: Bearer $AGENT_FEEDBACK_API_KEY\" \\\n  -H 'Content-Type: application\u002Fjson' \\\n  --data @friction.json\n",[217,1243,1244,1271,1287,1296],{"__ignoreMap":411},[415,1245,1246,1250,1253,1256,1259,1262,1265,1268],{"class":417,"line":418},[415,1247,1249],{"class":1248},"snPdu","curl",[415,1251,1252],{"class":702}," -sS",[415,1254,1255],{"class":702}," -X",[415,1257,1258],{"class":709}," POST",[415,1260,1261],{"class":709}," \"",[415,1263,1264],{"class":424},"$AGENT_FEEDBACK_URL",[415,1266,1267],{"class":709},"\u002Fapi\u002Fv1\u002Fsubmissions\"",[415,1269,1270],{"class":702}," \\\n",[415,1272,1273,1276,1279,1282,1285],{"class":417,"line":438},[415,1274,1275],{"class":702},"  -H",[415,1277,1278],{"class":709}," \"Authorization: Bearer ",[415,1280,1281],{"class":424},"$AGENT_FEEDBACK_API_KEY",[415,1283,1284],{"class":709},"\"",[415,1286,1270],{"class":702},[415,1288,1289,1291,1294],{"class":417,"line":715},[415,1290,1275],{"class":702},[415,1292,1293],{"class":709}," 'Content-Type: application\u002Fjson'",[415,1295,1270],{"class":702},[415,1297,1298,1301],{"class":417,"line":728},[415,1299,1300],{"class":702},"  --data",[415,1302,1303],{"class":709}," @friction.json\n",[406,1305,1307],{"className":688,"code":1306,"language":690,"meta":411,"style":411},"{\n  \"kind\": \"friction\",\n  \"key\": \"friction-workstation-a-019250f2\",\n  \"summary\": \"README install step 3 references a flag that no longer exists\",\n  \"machine\": \"workstation-a\",\n  \"model\": \"claude-fable-5-1\",\n  \"harness\": \"claude-code\",\n  \"project\": \"example\",\n  \"occurred_at\": \"2026-09-27T09:58:12Z\",\n  \"context\": {\"git_commit\": \"a1b2c3d\", \"client\": \"agentfeedback\u002F4.0.0\", \"origin\": \"agent\"},\n  \"payload\": {\n    \"category\": \"documentation\",\n    \"details\": \"Step 3 says --init; the flag was removed in 3.0.\",\n    \"fix_status\": \"applied\",\n    \"fix_ref\": \"example@a1b2c3d\"\n  }\n}\n",[217,1308,1309,1313,1325,1337,1349,1361,1374,1387,1400,1413,1453,1462,1475,1488,1501,1512,1518],{"__ignoreMap":411},[415,1310,1311],{"class":417,"line":418},[415,1312,697],{"class":424},[415,1314,1315,1318,1320,1323],{"class":417,"line":438},[415,1316,1317],{"class":702},"  \"kind\"",[415,1319,706],{"class":424},[415,1321,1322],{"class":709},"\"friction\"",[415,1324,288],{"class":424},[415,1326,1327,1330,1332,1335],{"class":417,"line":715},[415,1328,1329],{"class":702},"  \"key\"",[415,1331,706],{"class":424},[415,1333,1334],{"class":709},"\"friction-workstation-a-019250f2\"",[415,1336,288],{"class":424},[415,1338,1339,1342,1344,1347],{"class":417,"line":728},[415,1340,1341],{"class":702},"  \"summary\"",[415,1343,706],{"class":424},[415,1345,1346],{"class":709},"\"README install step 3 references a flag that no longer exists\"",[415,1348,288],{"class":424},[415,1350,1351,1354,1356,1359],{"class":417,"line":739},[415,1352,1353],{"class":702},"  \"machine\"",[415,1355,706],{"class":424},[415,1357,1358],{"class":709},"\"workstation-a\"",[415,1360,288],{"class":424},[415,1362,1364,1367,1369,1372],{"class":417,"line":1363},6,[415,1365,1366],{"class":702},"  \"model\"",[415,1368,706],{"class":424},[415,1370,1371],{"class":709},"\"claude-fable-5-1\"",[415,1373,288],{"class":424},[415,1375,1377,1380,1382,1385],{"class":417,"line":1376},7,[415,1378,1379],{"class":702},"  \"harness\"",[415,1381,706],{"class":424},[415,1383,1384],{"class":709},"\"claude-code\"",[415,1386,288],{"class":424},[415,1388,1390,1393,1395,1398],{"class":417,"line":1389},8,[415,1391,1392],{"class":702},"  \"project\"",[415,1394,706],{"class":424},[415,1396,1397],{"class":709},"\"example\"",[415,1399,288],{"class":424},[415,1401,1403,1406,1408,1411],{"class":417,"line":1402},9,[415,1404,1405],{"class":702},"  \"occurred_at\"",[415,1407,706],{"class":424},[415,1409,1410],{"class":709},"\"2026-09-27T09:58:12Z\"",[415,1412,288],{"class":424},[415,1414,1416,1419,1422,1425,1427,1430,1432,1435,1437,1440,1442,1445,1447,1450],{"class":417,"line":1415},10,[415,1417,1418],{"class":702},"  \"context\"",[415,1420,1421],{"class":424},": {",[415,1423,1424],{"class":702},"\"git_commit\"",[415,1426,706],{"class":424},[415,1428,1429],{"class":709},"\"a1b2c3d\"",[415,1431,279],{"class":424},[415,1433,1434],{"class":702},"\"client\"",[415,1436,706],{"class":424},[415,1438,1439],{"class":709},"\"agentfeedback\u002F4.0.0\"",[415,1441,279],{"class":424},[415,1443,1444],{"class":702},"\"origin\"",[415,1446,706],{"class":424},[415,1448,1449],{"class":709},"\"agent\"",[415,1451,1452],{"class":424},"},\n",[415,1454,1456,1459],{"class":417,"line":1455},11,[415,1457,1458],{"class":702},"  \"payload\"",[415,1460,1461],{"class":424},": {\n",[415,1463,1465,1468,1470,1473],{"class":417,"line":1464},12,[415,1466,1467],{"class":702},"    \"category\"",[415,1469,706],{"class":424},[415,1471,1472],{"class":709},"\"documentation\"",[415,1474,288],{"class":424},[415,1476,1478,1481,1483,1486],{"class":417,"line":1477},13,[415,1479,1480],{"class":702},"    \"details\"",[415,1482,706],{"class":424},[415,1484,1485],{"class":709},"\"Step 3 says --init; the flag was removed in 3.0.\"",[415,1487,288],{"class":424},[415,1489,1491,1494,1496,1499],{"class":417,"line":1490},14,[415,1492,1493],{"class":702},"    \"fix_status\"",[415,1495,706],{"class":424},[415,1497,1498],{"class":709},"\"applied\"",[415,1500,288],{"class":424},[415,1502,1504,1507,1509],{"class":417,"line":1503},15,[415,1505,1506],{"class":702},"    \"fix_ref\"",[415,1508,706],{"class":424},[415,1510,1511],{"class":709},"\"example@a1b2c3d\"\n",[415,1513,1515],{"class":417,"line":1514},16,[415,1516,1517],{"class":424},"  }\n",[415,1519,1521],{"class":417,"line":1520},17,[415,1522,742],{"class":424},[201,1524,1525,1526,1529],{},"201 with ",[217,1527,1528],{},"Location: \u002Fapi\u002Fv1\u002Fsubmissions\u002F44","; the same body again is 200 with\nthe same record:",[406,1531,1533],{"className":688,"code":1532,"language":690,"meta":411,"style":411},"{\n  \"submission\": {\n    \"id\": 44,\n    \"uid\": \"019250f2-8c3e-7a4b-9d1e-2f3a4b5c6d7e\",\n    \"kind\": \"friction\",\n    \"schema_version\": 1,\n    \"key\": \"friction-workstation-a-019250f2\",\n    \"summary\": \"README install step 3 references a flag that no longer exists\",\n    \"machine\": \"workstation-a\",\n    \"model\": \"claude-fable-5-1\",\n    \"harness\": \"claude-code\",\n    \"project\": \"example\",\n    \"occurred_at\": \"2026-09-27T09:58:12.000000Z\",\n    \"context\": {\"client\": \"agentfeedback\u002F4.0.0\", \"git_commit\": \"a1b2c3d\", \"origin\": \"agent\"},\n    \"payload\": {\n      \"category\": \"documentation\",\n      \"details\": \"Step 3 says --init; the flag was removed in 3.0.\",\n      \"fix_ref\": \"example@a1b2c3d\",\n      \"fix_status\": \"applied\"\n    },\n    \"content_hash\": \"157cf352c13503c9cac14d40ba9ab1bccd2dd8c6bb6567903a9b68881bc79c04\",\n    \"created_at\": \"2026-09-27T10:00:01.123456Z\"\n  },\n  \"warnings\": []\n}\n",[217,1534,1535,1539,1546,1558,1570,1581,1593,1604,1615,1626,1637,1648,1659,1671,1702,1709,1720,1731,1744,1755,1761,1774,1785,1791,1800],{"__ignoreMap":411},[415,1536,1537],{"class":417,"line":418},[415,1538,697],{"class":424},[415,1540,1541,1544],{"class":417,"line":438},[415,1542,1543],{"class":702},"  \"submission\"",[415,1545,1461],{"class":424},[415,1547,1548,1551,1553,1556],{"class":417,"line":715},[415,1549,1550],{"class":702},"    \"id\"",[415,1552,706],{"class":424},[415,1554,1555],{"class":702},"44",[415,1557,288],{"class":424},[415,1559,1560,1563,1565,1568],{"class":417,"line":728},[415,1561,1562],{"class":702},"    \"uid\"",[415,1564,706],{"class":424},[415,1566,1567],{"class":709},"\"019250f2-8c3e-7a4b-9d1e-2f3a4b5c6d7e\"",[415,1569,288],{"class":424},[415,1571,1572,1575,1577,1579],{"class":417,"line":739},[415,1573,1574],{"class":702},"    \"kind\"",[415,1576,706],{"class":424},[415,1578,1322],{"class":709},[415,1580,288],{"class":424},[415,1582,1583,1586,1588,1591],{"class":417,"line":1363},[415,1584,1585],{"class":702},"    \"schema_version\"",[415,1587,706],{"class":424},[415,1589,1590],{"class":702},"1",[415,1592,288],{"class":424},[415,1594,1595,1598,1600,1602],{"class":417,"line":1376},[415,1596,1597],{"class":702},"    \"key\"",[415,1599,706],{"class":424},[415,1601,1334],{"class":709},[415,1603,288],{"class":424},[415,1605,1606,1609,1611,1613],{"class":417,"line":1389},[415,1607,1608],{"class":702},"    \"summary\"",[415,1610,706],{"class":424},[415,1612,1346],{"class":709},[415,1614,288],{"class":424},[415,1616,1617,1620,1622,1624],{"class":417,"line":1402},[415,1618,1619],{"class":702},"    \"machine\"",[415,1621,706],{"class":424},[415,1623,1358],{"class":709},[415,1625,288],{"class":424},[415,1627,1628,1631,1633,1635],{"class":417,"line":1415},[415,1629,1630],{"class":702},"    \"model\"",[415,1632,706],{"class":424},[415,1634,1371],{"class":709},[415,1636,288],{"class":424},[415,1638,1639,1642,1644,1646],{"class":417,"line":1455},[415,1640,1641],{"class":702},"    \"harness\"",[415,1643,706],{"class":424},[415,1645,1384],{"class":709},[415,1647,288],{"class":424},[415,1649,1650,1653,1655,1657],{"class":417,"line":1464},[415,1651,1652],{"class":702},"    \"project\"",[415,1654,706],{"class":424},[415,1656,1397],{"class":709},[415,1658,288],{"class":424},[415,1660,1661,1664,1666,1669],{"class":417,"line":1477},[415,1662,1663],{"class":702},"    \"occurred_at\"",[415,1665,706],{"class":424},[415,1667,1668],{"class":709},"\"2026-09-27T09:58:12.000000Z\"",[415,1670,288],{"class":424},[415,1672,1673,1676,1678,1680,1682,1684,1686,1688,1690,1692,1694,1696,1698,1700],{"class":417,"line":1490},[415,1674,1675],{"class":702},"    \"context\"",[415,1677,1421],{"class":424},[415,1679,1434],{"class":702},[415,1681,706],{"class":424},[415,1683,1439],{"class":709},[415,1685,279],{"class":424},[415,1687,1424],{"class":702},[415,1689,706],{"class":424},[415,1691,1429],{"class":709},[415,1693,279],{"class":424},[415,1695,1444],{"class":702},[415,1697,706],{"class":424},[415,1699,1449],{"class":709},[415,1701,1452],{"class":424},[415,1703,1704,1707],{"class":417,"line":1503},[415,1705,1706],{"class":702},"    \"payload\"",[415,1708,1461],{"class":424},[415,1710,1711,1714,1716,1718],{"class":417,"line":1514},[415,1712,1713],{"class":702},"      \"category\"",[415,1715,706],{"class":424},[415,1717,1472],{"class":709},[415,1719,288],{"class":424},[415,1721,1722,1725,1727,1729],{"class":417,"line":1520},[415,1723,1724],{"class":702},"      \"details\"",[415,1726,706],{"class":424},[415,1728,1485],{"class":709},[415,1730,288],{"class":424},[415,1732,1734,1737,1739,1742],{"class":417,"line":1733},18,[415,1735,1736],{"class":702},"      \"fix_ref\"",[415,1738,706],{"class":424},[415,1740,1741],{"class":709},"\"example@a1b2c3d\"",[415,1743,288],{"class":424},[415,1745,1747,1750,1752],{"class":417,"line":1746},19,[415,1748,1749],{"class":702},"      \"fix_status\"",[415,1751,706],{"class":424},[415,1753,1754],{"class":709},"\"applied\"\n",[415,1756,1758],{"class":417,"line":1757},20,[415,1759,1760],{"class":424},"    },\n",[415,1762,1764,1767,1769,1772],{"class":417,"line":1763},21,[415,1765,1766],{"class":702},"    \"content_hash\"",[415,1768,706],{"class":424},[415,1770,1771],{"class":709},"\"157cf352c13503c9cac14d40ba9ab1bccd2dd8c6bb6567903a9b68881bc79c04\"",[415,1773,288],{"class":424},[415,1775,1777,1780,1782],{"class":417,"line":1776},22,[415,1778,1779],{"class":702},"    \"created_at\"",[415,1781,706],{"class":424},[415,1783,1784],{"class":709},"\"2026-09-27T10:00:01.123456Z\"\n",[415,1786,1788],{"class":417,"line":1787},23,[415,1789,1790],{"class":424},"  },\n",[415,1792,1794,1797],{"class":417,"line":1793},24,[415,1795,1796],{"class":702},"  \"warnings\"",[415,1798,1799],{"class":424},": []\n",[415,1801,1803],{"class":417,"line":1802},25,[415,1804,742],{"class":424},[201,1806,1807,1808,1810,1811,1813],{},"A flat body with no ",[217,1809,947],{}," and no ",[217,1812,976],{}," is stored too, with warnings:",[406,1815,1817],{"className":688,"code":1816,"language":690,"meta":411,"style":411},"{\"summary\": \"the linter ignores its config file\", \"category\": \"tooling\", \"Model\": \"claude-fable-5-1\", \"machine\": \"workstation-a\"}\n",[217,1818,1819],{"__ignoreMap":411},[415,1820,1821,1824,1827,1829,1832,1834,1837,1839,1842,1844,1847,1849,1851,1853,1856,1858,1860],{"class":417,"line":418},[415,1822,1823],{"class":424},"{",[415,1825,1826],{"class":702},"\"summary\"",[415,1828,706],{"class":424},[415,1830,1831],{"class":709},"\"the linter ignores its config file\"",[415,1833,279],{"class":424},[415,1835,1836],{"class":702},"\"category\"",[415,1838,706],{"class":424},[415,1840,1841],{"class":709},"\"tooling\"",[415,1843,279],{"class":424},[415,1845,1846],{"class":702},"\"Model\"",[415,1848,706],{"class":424},[415,1850,1371],{"class":709},[415,1852,279],{"class":424},[415,1854,1855],{"class":702},"\"machine\"",[415,1857,706],{"class":424},[415,1859,1358],{"class":709},[415,1861,742],{"class":424},[406,1863,1865],{"className":688,"code":1864,"language":690,"meta":411,"style":411},"{\n  \"submission\": {\n    \"id\": 45,\n    \"uid\": \"019250f4-3d1a-7e52-8c0b-6f1e2d3c4b5a\",\n    \"kind\": \"unknown\",\n    \"schema_version\": 1,\n    \"summary\": \"the linter ignores its config file\",\n    \"machine\": \"workstation-a\",\n    \"payload\": {\"Model\": \"claude-fable-5-1\", \"category\": \"tooling\"},\n    \"content_hash\": \"e4e4baa28c3c46a2cd031183d2c1fc85710c9ffb7d593ca9e84302d288f677c2\",\n    \"created_at\": \"2026-09-27T10:02:40.654321Z\"\n  },\n  \"warnings\": [\n    {\"code\": \"missing_kind\", \"pointer\": \"\u002Fkind\", \"message\": \"kind is missing, empty or not a string; stored as unknown\"},\n    {\"code\": \"payload_inferred\", \"pointer\": \"\u002Fpayload\", \"message\": \"payload was absent; built from the members the envelope does not know\"},\n    {\"code\": \"moved_to_payload\", \"pointer\": \"\u002Fpayload\u002FModel\", \"message\": \"Model is not an envelope member; moved into payload; did you mean model\"},\n    {\"code\": \"moved_to_payload\", \"pointer\": \"\u002Fpayload\u002Fcategory\", \"message\": \"category is not an envelope member; moved into payload\"},\n    {\"code\": \"missing_recommended\", \"pointer\": \"\u002Fmodel\", \"message\": \"model is recommended\"}\n  ]\n}\n",[217,1866,1867,1871,1877,1888,1899,1910,1920,1930,1940,1962,1973,1982,1986,1993,2028,2059,2090,2120,2151,2156],{"__ignoreMap":411},[415,1868,1869],{"class":417,"line":418},[415,1870,697],{"class":424},[415,1872,1873,1875],{"class":417,"line":438},[415,1874,1543],{"class":702},[415,1876,1461],{"class":424},[415,1878,1879,1881,1883,1886],{"class":417,"line":715},[415,1880,1550],{"class":702},[415,1882,706],{"class":424},[415,1884,1885],{"class":702},"45",[415,1887,288],{"class":424},[415,1889,1890,1892,1894,1897],{"class":417,"line":728},[415,1891,1562],{"class":702},[415,1893,706],{"class":424},[415,1895,1896],{"class":709},"\"019250f4-3d1a-7e52-8c0b-6f1e2d3c4b5a\"",[415,1898,288],{"class":424},[415,1900,1901,1903,1905,1908],{"class":417,"line":739},[415,1902,1574],{"class":702},[415,1904,706],{"class":424},[415,1906,1907],{"class":709},"\"unknown\"",[415,1909,288],{"class":424},[415,1911,1912,1914,1916,1918],{"class":417,"line":1363},[415,1913,1585],{"class":702},[415,1915,706],{"class":424},[415,1917,1590],{"class":702},[415,1919,288],{"class":424},[415,1921,1922,1924,1926,1928],{"class":417,"line":1376},[415,1923,1608],{"class":702},[415,1925,706],{"class":424},[415,1927,1831],{"class":709},[415,1929,288],{"class":424},[415,1931,1932,1934,1936,1938],{"class":417,"line":1389},[415,1933,1619],{"class":702},[415,1935,706],{"class":424},[415,1937,1358],{"class":709},[415,1939,288],{"class":424},[415,1941,1942,1944,1946,1948,1950,1952,1954,1956,1958,1960],{"class":417,"line":1402},[415,1943,1706],{"class":702},[415,1945,1421],{"class":424},[415,1947,1846],{"class":702},[415,1949,706],{"class":424},[415,1951,1371],{"class":709},[415,1953,279],{"class":424},[415,1955,1836],{"class":702},[415,1957,706],{"class":424},[415,1959,1841],{"class":709},[415,1961,1452],{"class":424},[415,1963,1964,1966,1968,1971],{"class":417,"line":1415},[415,1965,1766],{"class":702},[415,1967,706],{"class":424},[415,1969,1970],{"class":709},"\"e4e4baa28c3c46a2cd031183d2c1fc85710c9ffb7d593ca9e84302d288f677c2\"",[415,1972,288],{"class":424},[415,1974,1975,1977,1979],{"class":417,"line":1455},[415,1976,1779],{"class":702},[415,1978,706],{"class":424},[415,1980,1981],{"class":709},"\"2026-09-27T10:02:40.654321Z\"\n",[415,1983,1984],{"class":417,"line":1464},[415,1985,1790],{"class":424},[415,1987,1988,1990],{"class":417,"line":1477},[415,1989,1796],{"class":702},[415,1991,1992],{"class":424},": [\n",[415,1994,1995,1998,2001,2003,2006,2008,2011,2013,2016,2018,2021,2023,2026],{"class":417,"line":1490},[415,1996,1997],{"class":424},"    {",[415,1999,2000],{"class":702},"\"code\"",[415,2002,706],{"class":424},[415,2004,2005],{"class":709},"\"missing_kind\"",[415,2007,279],{"class":424},[415,2009,2010],{"class":702},"\"pointer\"",[415,2012,706],{"class":424},[415,2014,2015],{"class":709},"\"\u002Fkind\"",[415,2017,279],{"class":424},[415,2019,2020],{"class":702},"\"message\"",[415,2022,706],{"class":424},[415,2024,2025],{"class":709},"\"kind is missing, empty or not a string; stored as unknown\"",[415,2027,1452],{"class":424},[415,2029,2030,2032,2034,2036,2039,2041,2043,2045,2048,2050,2052,2054,2057],{"class":417,"line":1503},[415,2031,1997],{"class":424},[415,2033,2000],{"class":702},[415,2035,706],{"class":424},[415,2037,2038],{"class":709},"\"payload_inferred\"",[415,2040,279],{"class":424},[415,2042,2010],{"class":702},[415,2044,706],{"class":424},[415,2046,2047],{"class":709},"\"\u002Fpayload\"",[415,2049,279],{"class":424},[415,2051,2020],{"class":702},[415,2053,706],{"class":424},[415,2055,2056],{"class":709},"\"payload was absent; built from the members the envelope does not know\"",[415,2058,1452],{"class":424},[415,2060,2061,2063,2065,2067,2070,2072,2074,2076,2079,2081,2083,2085,2088],{"class":417,"line":1514},[415,2062,1997],{"class":424},[415,2064,2000],{"class":702},[415,2066,706],{"class":424},[415,2068,2069],{"class":709},"\"moved_to_payload\"",[415,2071,279],{"class":424},[415,2073,2010],{"class":702},[415,2075,706],{"class":424},[415,2077,2078],{"class":709},"\"\u002Fpayload\u002FModel\"",[415,2080,279],{"class":424},[415,2082,2020],{"class":702},[415,2084,706],{"class":424},[415,2086,2087],{"class":709},"\"Model is not an envelope member; moved into payload; did you mean model\"",[415,2089,1452],{"class":424},[415,2091,2092,2094,2096,2098,2100,2102,2104,2106,2109,2111,2113,2115,2118],{"class":417,"line":1520},[415,2093,1997],{"class":424},[415,2095,2000],{"class":702},[415,2097,706],{"class":424},[415,2099,2069],{"class":709},[415,2101,279],{"class":424},[415,2103,2010],{"class":702},[415,2105,706],{"class":424},[415,2107,2108],{"class":709},"\"\u002Fpayload\u002Fcategory\"",[415,2110,279],{"class":424},[415,2112,2020],{"class":702},[415,2114,706],{"class":424},[415,2116,2117],{"class":709},"\"category is not an envelope member; moved into payload\"",[415,2119,1452],{"class":424},[415,2121,2122,2124,2126,2128,2131,2133,2135,2137,2140,2142,2144,2146,2149],{"class":417,"line":1733},[415,2123,1997],{"class":424},[415,2125,2000],{"class":702},[415,2127,706],{"class":424},[415,2129,2130],{"class":709},"\"missing_recommended\"",[415,2132,279],{"class":424},[415,2134,2010],{"class":702},[415,2136,706],{"class":424},[415,2138,2139],{"class":709},"\"\u002Fmodel\"",[415,2141,279],{"class":424},[415,2143,2020],{"class":702},[415,2145,706],{"class":424},[415,2147,2148],{"class":709},"\"model is recommended\"",[415,2150,742],{"class":424},[415,2152,2153],{"class":417,"line":1746},[415,2154,2155],{"class":424},"  ]\n",[415,2157,2158],{"class":417,"line":1757},[415,2159,742],{"class":424},[201,2161,2162,2163,2165],{},"The same ",[217,2164,449],{}," with different content:",[406,2167,2169],{"className":688,"code":2168,"language":690,"meta":411,"style":411},"{\n  \"error\": \"replay_mismatch\",\n  \"message\": \"key \\\"friction-workstation-a-019250f2\\\" was already used with different content\",\n  \"request_id\": \"cac965ab7ef7e9962133bac8aa047267\",\n  \"details\": [\n    {\n      \"code\": \"key_reused\",\n      \"pointer\": \"\u002Fkey\",\n      \"message\": \"key \\\"friction-workstation-a-019250f2\\\" already names submission 44 with different content\",\n      \"existing_id\": 44\n    }\n  ]\n}\n",[217,2170,2171,2175,2186,2208,2219,2226,2231,2243,2255,2275,2285,2290,2294],{"__ignoreMap":411},[415,2172,2173],{"class":417,"line":418},[415,2174,697],{"class":424},[415,2176,2177,2179,2181,2184],{"class":417,"line":438},[415,2178,703],{"class":702},[415,2180,706],{"class":424},[415,2182,2183],{"class":709},"\"replay_mismatch\"",[415,2185,288],{"class":424},[415,2187,2188,2190,2192,2195,2198,2201,2203,2206],{"class":417,"line":715},[415,2189,718],{"class":702},[415,2191,706],{"class":424},[415,2193,2194],{"class":709},"\"key ",[415,2196,2197],{"class":702},"\\\"",[415,2199,2200],{"class":709},"friction-workstation-a-019250f2",[415,2202,2197],{"class":702},[415,2204,2205],{"class":709}," was already used with different content\"",[415,2207,288],{"class":424},[415,2209,2210,2212,2214,2217],{"class":417,"line":728},[415,2211,731],{"class":702},[415,2213,706],{"class":424},[415,2215,2216],{"class":709},"\"cac965ab7ef7e9962133bac8aa047267\"",[415,2218,288],{"class":424},[415,2220,2221,2224],{"class":417,"line":739},[415,2222,2223],{"class":702},"  \"details\"",[415,2225,1992],{"class":424},[415,2227,2228],{"class":417,"line":1363},[415,2229,2230],{"class":424},"    {\n",[415,2232,2233,2236,2238,2241],{"class":417,"line":1376},[415,2234,2235],{"class":702},"      \"code\"",[415,2237,706],{"class":424},[415,2239,2240],{"class":709},"\"key_reused\"",[415,2242,288],{"class":424},[415,2244,2245,2248,2250,2253],{"class":417,"line":1389},[415,2246,2247],{"class":702},"      \"pointer\"",[415,2249,706],{"class":424},[415,2251,2252],{"class":709},"\"\u002Fkey\"",[415,2254,288],{"class":424},[415,2256,2257,2260,2262,2264,2266,2268,2270,2273],{"class":417,"line":1402},[415,2258,2259],{"class":702},"      \"message\"",[415,2261,706],{"class":424},[415,2263,2194],{"class":709},[415,2265,2197],{"class":702},[415,2267,2200],{"class":709},[415,2269,2197],{"class":702},[415,2271,2272],{"class":709}," already names submission 44 with different content\"",[415,2274,288],{"class":424},[415,2276,2277,2280,2282],{"class":417,"line":1415},[415,2278,2279],{"class":702},"      \"existing_id\"",[415,2281,706],{"class":424},[415,2283,2284],{"class":702},"44\n",[415,2286,2287],{"class":417,"line":1455},[415,2288,2289],{"class":424},"    }\n",[415,2291,2292],{"class":417,"line":1464},[415,2293,2155],{"class":424},[415,2295,2296],{"class":417,"line":1477},[415,2297,742],{"class":424},[201,2299,2300],{},"A body that is JSON but not an object:",[406,2302,2304],{"className":688,"code":2303,"language":690,"meta":411,"style":411},"{\n  \"error\": \"bad_request\",\n  \"message\": \"body is a JSON value but not an object\",\n  \"request_id\": \"ec90a683216a22de8d72bdac3f86862b\"\n}\n",[217,2305,2306,2310,2321,2332,2341],{"__ignoreMap":411},[415,2307,2308],{"class":417,"line":418},[415,2309,697],{"class":424},[415,2311,2312,2314,2316,2319],{"class":417,"line":438},[415,2313,703],{"class":702},[415,2315,706],{"class":424},[415,2317,2318],{"class":709},"\"bad_request\"",[415,2320,288],{"class":424},[415,2322,2323,2325,2327,2330],{"class":417,"line":715},[415,2324,718],{"class":702},[415,2326,706],{"class":424},[415,2328,2329],{"class":709},"\"body is a JSON value but not an object\"",[415,2331,288],{"class":424},[415,2333,2334,2336,2338],{"class":417,"line":728},[415,2335,731],{"class":702},[415,2337,706],{"class":424},[415,2339,2340],{"class":709},"\"ec90a683216a22de8d72bdac3f86862b\"\n",[415,2342,2343],{"class":417,"line":739},[415,2344,742],{"class":424},[1231,2346,2347],{"id":283},"List",[201,2349,2350],{},[217,2351,2352],{},"GET \u002Fapi\u002Fv1\u002Fsubmissions",[406,2354,2356],{"className":408,"code":2355,"language":410,"meta":411,"style":411},"curl -sS -H \"Authorization: Bearer $AGENT_FEEDBACK_API_KEY\" \\\n  \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fsubmissions?processed=false&limit=1\"\n",[217,2357,2358,2375],{"__ignoreMap":411},[415,2359,2360,2362,2364,2367,2369,2371,2373],{"class":417,"line":418},[415,2361,1249],{"class":1248},[415,2363,1252],{"class":702},[415,2365,2366],{"class":702}," -H",[415,2368,1278],{"class":709},[415,2370,1281],{"class":424},[415,2372,1284],{"class":709},[415,2374,1270],{"class":702},[415,2376,2377,2380,2382],{"class":417,"line":438},[415,2378,2379],{"class":709},"  \"",[415,2381,1264],{"class":424},[415,2383,2384],{"class":709},"\u002Fapi\u002Fv1\u002Fsubmissions?processed=false&limit=1\"\n",[406,2386,2388],{"className":688,"code":2387,"language":690,"meta":411,"style":411},"{\n  \"submissions\": [\n    {\n      \"id\": 45,\n      \"uid\": \"019250f4-3d1a-7e52-8c0b-6f1e2d3c4b5a\",\n      \"kind\": \"unknown\",\n      \"schema_version\": 1,\n      \"summary\": \"the linter ignores its config file\",\n      \"machine\": \"workstation-a\",\n      \"content_hash\": \"e4e4baa28c3c46a2cd031183d2c1fc85710c9ffb7d593ca9e84302d288f677c2\",\n      \"created_at\": \"2026-09-27T10:02:40.654321Z\"\n    }\n  ],\n  \"limit\": 1,\n  \"total\": 2,\n  \"has_more\": true,\n  \"next_before_id\": 45,\n  \"next_after_id\": null\n}\n",[217,2389,2390,2394,2401,2405,2416,2427,2438,2449,2460,2471,2482,2491,2495,2500,2511,2523,2535,2546,2556],{"__ignoreMap":411},[415,2391,2392],{"class":417,"line":418},[415,2393,697],{"class":424},[415,2395,2396,2399],{"class":417,"line":438},[415,2397,2398],{"class":702},"  \"submissions\"",[415,2400,1992],{"class":424},[415,2402,2403],{"class":417,"line":715},[415,2404,2230],{"class":424},[415,2406,2407,2410,2412,2414],{"class":417,"line":728},[415,2408,2409],{"class":702},"      \"id\"",[415,2411,706],{"class":424},[415,2413,1885],{"class":702},[415,2415,288],{"class":424},[415,2417,2418,2421,2423,2425],{"class":417,"line":739},[415,2419,2420],{"class":702},"      \"uid\"",[415,2422,706],{"class":424},[415,2424,1896],{"class":709},[415,2426,288],{"class":424},[415,2428,2429,2432,2434,2436],{"class":417,"line":1363},[415,2430,2431],{"class":702},"      \"kind\"",[415,2433,706],{"class":424},[415,2435,1907],{"class":709},[415,2437,288],{"class":424},[415,2439,2440,2443,2445,2447],{"class":417,"line":1376},[415,2441,2442],{"class":702},"      \"schema_version\"",[415,2444,706],{"class":424},[415,2446,1590],{"class":702},[415,2448,288],{"class":424},[415,2450,2451,2454,2456,2458],{"class":417,"line":1389},[415,2452,2453],{"class":702},"      \"summary\"",[415,2455,706],{"class":424},[415,2457,1831],{"class":709},[415,2459,288],{"class":424},[415,2461,2462,2465,2467,2469],{"class":417,"line":1402},[415,2463,2464],{"class":702},"      \"machine\"",[415,2466,706],{"class":424},[415,2468,1358],{"class":709},[415,2470,288],{"class":424},[415,2472,2473,2476,2478,2480],{"class":417,"line":1415},[415,2474,2475],{"class":702},"      \"content_hash\"",[415,2477,706],{"class":424},[415,2479,1970],{"class":709},[415,2481,288],{"class":424},[415,2483,2484,2487,2489],{"class":417,"line":1455},[415,2485,2486],{"class":702},"      \"created_at\"",[415,2488,706],{"class":424},[415,2490,1981],{"class":709},[415,2492,2493],{"class":417,"line":1464},[415,2494,2289],{"class":424},[415,2496,2497],{"class":417,"line":1477},[415,2498,2499],{"class":424},"  ],\n",[415,2501,2502,2505,2507,2509],{"class":417,"line":1490},[415,2503,2504],{"class":702},"  \"limit\"",[415,2506,706],{"class":424},[415,2508,1590],{"class":702},[415,2510,288],{"class":424},[415,2512,2513,2516,2518,2521],{"class":417,"line":1503},[415,2514,2515],{"class":702},"  \"total\"",[415,2517,706],{"class":424},[415,2519,2520],{"class":702},"2",[415,2522,288],{"class":424},[415,2524,2525,2528,2530,2533],{"class":417,"line":1514},[415,2526,2527],{"class":702},"  \"has_more\"",[415,2529,706],{"class":424},[415,2531,2532],{"class":702},"true",[415,2534,288],{"class":424},[415,2536,2537,2540,2542,2544],{"class":417,"line":1520},[415,2538,2539],{"class":702},"  \"next_before_id\"",[415,2541,706],{"class":424},[415,2543,1885],{"class":702},[415,2545,288],{"class":424},[415,2547,2548,2551,2553],{"class":417,"line":1733},[415,2549,2550],{"class":702},"  \"next_after_id\"",[415,2552,706],{"class":424},[415,2554,2555],{"class":702},"null\n",[415,2557,2558],{"class":417,"line":1746},[415,2559,742],{"class":424},[457,2561,2562,2647,2657,2669,2715],{},[250,2563,2564,2567,2568,2570,2571,2573,2574,279,2576,279,2578,279,2580,279,2582,288,2584,279,2586,347,2589,2592,2593,2570,2596,2599,2600,2603,2604,279,2606,2570,2609,2612,2613,2616,2617,279,2619,347,2621,2623,2624,2627,2628,2630,2631,2633,2634,2637,2638,2640,2641,2643,2644,242],{},[234,2565,2566],{},"Filters",", all optional, combined with AND: ",[217,2569,947],{}," (",[217,2572,1042],{}," selects\nun-kinded rows), ",[217,2575,950],{},[217,2577,449],{},[217,2579,958],{},[217,2581,961],{},[217,2583,967],{},[217,2585,964],{},[217,2587,2588],{},"category",[217,2590,2591],{},"fix_status"," (friction payload members; other\nkinds never match), ",[217,2594,2595],{},"origin",[217,2597,2598],{},"context.origin","), ",[217,2601,2602],{},"exclude_kind","\n(repeatable), ",[217,2605,656],{},[217,2607,2608],{},"processed",[217,2610,2611],{},"false"," is the triage queue),\n",[217,2614,2615],{},"redacted"," (default: both), ",[217,2618,1005],{},[217,2620,633],{},[217,2622,636],{}," (RFC 3339,\ninclusive) on the timestamp ",[217,2625,2626],{},"on"," names (",[217,2629,1008],{},", the default, or\n",[217,2632,639],{},"), and ",[217,2635,2636],{},"q",": a case-insensitive substring over ",[217,2639,955],{}," and\nevery string value in ",[217,2642,976],{},", at most 200 bytes. Exact semantics per\nparameter are in ",[205,2645,210],{"href":207,"rel":2646},[209],[250,2648,2649,2652,2653,2656],{},[234,2650,2651],{},"Strict query."," An unknown parameter name, an empty value or a repeated\nsingleton parameter is 400 ",[217,2654,2655],{},"validation_error"," naming the parameter.",[250,2658,2659,2662,2663,977,2665,2668],{},[234,2660,2661],{},"Rows"," are the record minus ",[217,2664,976],{},[217,2666,2667],{},"include=payload"," adds it.",[250,2670,2671,551,2674,2677,2678,2680,2681,2684,2685,977,2688,2691,2692,2695,2696,2699,2700,2703,2704,2707,2708,2711,2712,2714],{},[234,2672,2673],{},"Paging.",[217,2675,2676],{},"limit"," is 1–500 (1–100 with ",[217,2679,2667],{},"), default 50;\nout of range is 400. Without a cursor the page is newest first.\n",[217,2682,2683],{},"before_id=N"," pages newest first through ",[217,2686,2687],{},"id \u003C N",[217,2689,2690],{},"after_id=N"," pages\noldest first through ",[217,2693,2694],{},"id > N","; the two are mutually exclusive. When\n",[217,2697,2698],{},"has_more"," is true exactly one of ",[217,2701,2702],{},"next_before_id"," \u002F ",[217,2705,2706],{},"next_after_id"," is\nset, matching the direction used; pass it back as the same cursor.\n",[217,2709,2710],{},"total"," counts every row matching the filters, ignoring cursors and\n",[217,2713,2676],{},", in the same read transaction as the page.",[250,2716,2717,2720,2721,2724,2725,2727,2728,2730],{},[234,2718,2719],{},"Draining the queue."," Page with ",[217,2722,2723],{},"processed=false"," following\n",[217,2726,2702],{}," until ",[217,2729,2698],{}," is false. Marking a row on the current\npage does not shift the next one, because the cursor is an id. This is a\ntraversal for one processor at a time, not a lease.",[406,2732,2734],{"className":688,"code":2733,"language":690,"meta":411,"style":411},"{\n  \"error\": \"validation_error\",\n  \"message\": \"limit must be between 1 and 500, got 900\",\n  \"request_id\": \"fe5ba4936b4c150d3fe3e06686ec4b1e\",\n  \"details\": [\n    {\"code\": \"out_of_range\", \"pointer\": \"?limit\", \"message\": \"limit must be between 1 and 500, got 900\"}\n  ]\n}\n",[217,2735,2736,2740,2751,2762,2773,2779,2809,2813],{"__ignoreMap":411},[415,2737,2738],{"class":417,"line":418},[415,2739,697],{"class":424},[415,2741,2742,2744,2746,2749],{"class":417,"line":438},[415,2743,703],{"class":702},[415,2745,706],{"class":424},[415,2747,2748],{"class":709},"\"validation_error\"",[415,2750,288],{"class":424},[415,2752,2753,2755,2757,2760],{"class":417,"line":715},[415,2754,718],{"class":702},[415,2756,706],{"class":424},[415,2758,2759],{"class":709},"\"limit must be between 1 and 500, got 900\"",[415,2761,288],{"class":424},[415,2763,2764,2766,2768,2771],{"class":417,"line":728},[415,2765,731],{"class":702},[415,2767,706],{"class":424},[415,2769,2770],{"class":709},"\"fe5ba4936b4c150d3fe3e06686ec4b1e\"",[415,2772,288],{"class":424},[415,2774,2775,2777],{"class":417,"line":739},[415,2776,2223],{"class":702},[415,2778,1992],{"class":424},[415,2780,2781,2783,2785,2787,2790,2792,2794,2796,2799,2801,2803,2805,2807],{"class":417,"line":1363},[415,2782,1997],{"class":424},[415,2784,2000],{"class":702},[415,2786,706],{"class":424},[415,2788,2789],{"class":709},"\"out_of_range\"",[415,2791,279],{"class":424},[415,2793,2010],{"class":702},[415,2795,706],{"class":424},[415,2797,2798],{"class":709},"\"?limit\"",[415,2800,279],{"class":424},[415,2802,2020],{"class":702},[415,2804,706],{"class":424},[415,2806,2759],{"class":709},[415,2808,742],{"class":424},[415,2810,2811],{"class":417,"line":1376},[415,2812,2155],{"class":424},[415,2814,2815],{"class":417,"line":1389},[415,2816,742],{"class":424},[1231,2818,2819],{"id":287},"Get",[201,2821,2822,2825,2826,2828,2829,2832,2833,242],{},[217,2823,2824],{},"GET \u002Fapi\u002Fv1\u002Fsubmissions\u002F{id}"," returns the bare record. ",[217,2827,913],{}," must match\n",[217,2830,2831],{},"^[1-9][0-9]*$",", else 400; an absent record is 404 ",[217,2834,604],{},[406,2836,2838],{"className":408,"code":2837,"language":410,"meta":411,"style":411},"curl -sS -H \"Authorization: Bearer $AGENT_FEEDBACK_API_KEY\" \\\n  \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fsubmissions\u002F44\"\n",[217,2839,2840,2856],{"__ignoreMap":411},[415,2841,2842,2844,2846,2848,2850,2852,2854],{"class":417,"line":418},[415,2843,1249],{"class":1248},[415,2845,1252],{"class":702},[415,2847,2366],{"class":702},[415,2849,1278],{"class":709},[415,2851,1281],{"class":424},[415,2853,1284],{"class":709},[415,2855,1270],{"class":702},[415,2857,2858,2860,2862],{"class":417,"line":438},[415,2859,2379],{"class":709},[415,2861,1264],{"class":424},[415,2863,2864],{"class":709},"\u002Fapi\u002Fv1\u002Fsubmissions\u002F44\"\n",[406,2866,2868],{"className":688,"code":2867,"language":690,"meta":411,"style":411},"{\n  \"id\": 44,\n  \"uid\": \"019250f2-8c3e-7a4b-9d1e-2f3a4b5c6d7e\",\n  \"kind\": \"friction\",\n  \"schema_version\": 1,\n  \"key\": \"friction-workstation-a-019250f2\",\n  \"summary\": \"README install step 3 references a flag that no longer exists\",\n  \"machine\": \"workstation-a\",\n  \"model\": \"claude-fable-5-1\",\n  \"harness\": \"claude-code\",\n  \"project\": \"example\",\n  \"occurred_at\": \"2026-09-27T09:58:12.000000Z\",\n  \"context\": {\"client\": \"agentfeedback\u002F4.0.0\", \"git_commit\": \"a1b2c3d\", \"origin\": \"agent\"},\n  \"payload\": {\n    \"category\": \"documentation\",\n    \"details\": \"Step 3 says --init; the flag was removed in 3.0.\",\n    \"fix_ref\": \"example@a1b2c3d\",\n    \"fix_status\": \"applied\"\n  },\n  \"content_hash\": \"157cf352c13503c9cac14d40ba9ab1bccd2dd8c6bb6567903a9b68881bc79c04\",\n  \"created_at\": \"2026-09-27T10:00:01.123456Z\"\n}\n",[217,2869,2870,2874,2885,2896,2906,2917,2927,2937,2947,2957,2967,2977,2987,3017,3023,3033,3043,3053,3061,3065,3076,3085],{"__ignoreMap":411},[415,2871,2872],{"class":417,"line":418},[415,2873,697],{"class":424},[415,2875,2876,2879,2881,2883],{"class":417,"line":438},[415,2877,2878],{"class":702},"  \"id\"",[415,2880,706],{"class":424},[415,2882,1555],{"class":702},[415,2884,288],{"class":424},[415,2886,2887,2890,2892,2894],{"class":417,"line":715},[415,2888,2889],{"class":702},"  \"uid\"",[415,2891,706],{"class":424},[415,2893,1567],{"class":709},[415,2895,288],{"class":424},[415,2897,2898,2900,2902,2904],{"class":417,"line":728},[415,2899,1317],{"class":702},[415,2901,706],{"class":424},[415,2903,1322],{"class":709},[415,2905,288],{"class":424},[415,2907,2908,2911,2913,2915],{"class":417,"line":739},[415,2909,2910],{"class":702},"  \"schema_version\"",[415,2912,706],{"class":424},[415,2914,1590],{"class":702},[415,2916,288],{"class":424},[415,2918,2919,2921,2923,2925],{"class":417,"line":1363},[415,2920,1329],{"class":702},[415,2922,706],{"class":424},[415,2924,1334],{"class":709},[415,2926,288],{"class":424},[415,2928,2929,2931,2933,2935],{"class":417,"line":1376},[415,2930,1341],{"class":702},[415,2932,706],{"class":424},[415,2934,1346],{"class":709},[415,2936,288],{"class":424},[415,2938,2939,2941,2943,2945],{"class":417,"line":1389},[415,2940,1353],{"class":702},[415,2942,706],{"class":424},[415,2944,1358],{"class":709},[415,2946,288],{"class":424},[415,2948,2949,2951,2953,2955],{"class":417,"line":1402},[415,2950,1366],{"class":702},[415,2952,706],{"class":424},[415,2954,1371],{"class":709},[415,2956,288],{"class":424},[415,2958,2959,2961,2963,2965],{"class":417,"line":1415},[415,2960,1379],{"class":702},[415,2962,706],{"class":424},[415,2964,1384],{"class":709},[415,2966,288],{"class":424},[415,2968,2969,2971,2973,2975],{"class":417,"line":1455},[415,2970,1392],{"class":702},[415,2972,706],{"class":424},[415,2974,1397],{"class":709},[415,2976,288],{"class":424},[415,2978,2979,2981,2983,2985],{"class":417,"line":1464},[415,2980,1405],{"class":702},[415,2982,706],{"class":424},[415,2984,1668],{"class":709},[415,2986,288],{"class":424},[415,2988,2989,2991,2993,2995,2997,2999,3001,3003,3005,3007,3009,3011,3013,3015],{"class":417,"line":1477},[415,2990,1418],{"class":702},[415,2992,1421],{"class":424},[415,2994,1434],{"class":702},[415,2996,706],{"class":424},[415,2998,1439],{"class":709},[415,3000,279],{"class":424},[415,3002,1424],{"class":702},[415,3004,706],{"class":424},[415,3006,1429],{"class":709},[415,3008,279],{"class":424},[415,3010,1444],{"class":702},[415,3012,706],{"class":424},[415,3014,1449],{"class":709},[415,3016,1452],{"class":424},[415,3018,3019,3021],{"class":417,"line":1490},[415,3020,1458],{"class":702},[415,3022,1461],{"class":424},[415,3024,3025,3027,3029,3031],{"class":417,"line":1503},[415,3026,1467],{"class":702},[415,3028,706],{"class":424},[415,3030,1472],{"class":709},[415,3032,288],{"class":424},[415,3034,3035,3037,3039,3041],{"class":417,"line":1514},[415,3036,1480],{"class":702},[415,3038,706],{"class":424},[415,3040,1485],{"class":709},[415,3042,288],{"class":424},[415,3044,3045,3047,3049,3051],{"class":417,"line":1520},[415,3046,1506],{"class":702},[415,3048,706],{"class":424},[415,3050,1741],{"class":709},[415,3052,288],{"class":424},[415,3054,3055,3057,3059],{"class":417,"line":1733},[415,3056,1493],{"class":702},[415,3058,706],{"class":424},[415,3060,1754],{"class":709},[415,3062,3063],{"class":417,"line":1746},[415,3064,1790],{"class":424},[415,3066,3067,3070,3072,3074],{"class":417,"line":1757},[415,3068,3069],{"class":702},"  \"content_hash\"",[415,3071,706],{"class":424},[415,3073,1771],{"class":709},[415,3075,288],{"class":424},[415,3077,3078,3081,3083],{"class":417,"line":1763},[415,3079,3080],{"class":702},"  \"created_at\"",[415,3082,706],{"class":424},[415,3084,1784],{"class":709},[415,3086,3087],{"class":417,"line":1776},[415,3088,742],{"class":424},[406,3090,3092],{"className":688,"code":3091,"language":690,"meta":411,"style":411},"{\n  \"error\": \"not_found\",\n  \"message\": \"submission 99 not found\",\n  \"request_id\": \"a68bfb0dfdae5f7b79b9c6d402361bca\"\n}\n",[217,3093,3094,3098,3109,3120,3129],{"__ignoreMap":411},[415,3095,3096],{"class":417,"line":418},[415,3097,697],{"class":424},[415,3099,3100,3102,3104,3107],{"class":417,"line":438},[415,3101,703],{"class":702},[415,3103,706],{"class":424},[415,3105,3106],{"class":709},"\"not_found\"",[415,3108,288],{"class":424},[415,3110,3111,3113,3115,3118],{"class":417,"line":715},[415,3112,718],{"class":702},[415,3114,706],{"class":424},[415,3116,3117],{"class":709},"\"submission 99 not found\"",[415,3119,288],{"class":424},[415,3121,3122,3124,3126],{"class":417,"line":728},[415,3123,731],{"class":702},[415,3125,706],{"class":424},[415,3127,3128],{"class":709},"\"a68bfb0dfdae5f7b79b9c6d402361bca\"\n",[415,3130,3131],{"class":417,"line":739},[415,3132,742],{"class":424},[1231,3134,3136],{"id":3135},"mark-one","Mark one",[201,3138,3139,3142],{},[217,3140,3141],{},"PATCH \u002Fapi\u002Fv1\u002Fsubmissions\u002F{id}"," sets the processing mark and returns the\nrecord; 404 when absent.",[406,3144,3146],{"className":408,"code":3145,"language":410,"meta":411,"style":411},"curl -sS -X PATCH \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fsubmissions\u002F44\" \\\n  -H \"Authorization: Bearer $AGENT_FEEDBACK_API_KEY\" \\\n  -H 'Content-Type: application\u002Fjson' \\\n  --data @mark.json\n",[217,3147,3148,3168,3180,3188],{"__ignoreMap":411},[415,3149,3150,3152,3154,3156,3159,3161,3163,3166],{"class":417,"line":418},[415,3151,1249],{"class":1248},[415,3153,1252],{"class":702},[415,3155,1255],{"class":702},[415,3157,3158],{"class":709}," PATCH",[415,3160,1261],{"class":709},[415,3162,1264],{"class":424},[415,3164,3165],{"class":709},"\u002Fapi\u002Fv1\u002Fsubmissions\u002F44\"",[415,3167,1270],{"class":702},[415,3169,3170,3172,3174,3176,3178],{"class":417,"line":438},[415,3171,1275],{"class":702},[415,3173,1278],{"class":709},[415,3175,1281],{"class":424},[415,3177,1284],{"class":709},[415,3179,1270],{"class":702},[415,3181,3182,3184,3186],{"class":417,"line":715},[415,3183,1275],{"class":702},[415,3185,1293],{"class":709},[415,3187,1270],{"class":702},[415,3189,3190,3192],{"class":417,"line":728},[415,3191,1300],{"class":702},[415,3193,3194],{"class":709}," @mark.json\n",[406,3196,3198],{"className":688,"code":3197,"language":690,"meta":411,"style":411},"{\n  \"processed\": true,\n  \"verdict\": \"fixed\",\n  \"resolution\": \"already applied by the reporter\",\n  \"ref\": \"example@a1b2c3d\",\n  \"processed_by\": \"workstation-b\u002Ftriage-2026-09-27\"\n}\n",[217,3199,3200,3204,3215,3227,3239,3250,3260],{"__ignoreMap":411},[415,3201,3202],{"class":417,"line":418},[415,3203,697],{"class":424},[415,3205,3206,3209,3211,3213],{"class":417,"line":438},[415,3207,3208],{"class":702},"  \"processed\"",[415,3210,706],{"class":424},[415,3212,2532],{"class":702},[415,3214,288],{"class":424},[415,3216,3217,3220,3222,3225],{"class":417,"line":715},[415,3218,3219],{"class":702},"  \"verdict\"",[415,3221,706],{"class":424},[415,3223,3224],{"class":709},"\"fixed\"",[415,3226,288],{"class":424},[415,3228,3229,3232,3234,3237],{"class":417,"line":728},[415,3230,3231],{"class":702},"  \"resolution\"",[415,3233,706],{"class":424},[415,3235,3236],{"class":709},"\"already applied by the reporter\"",[415,3238,288],{"class":424},[415,3240,3241,3244,3246,3248],{"class":417,"line":739},[415,3242,3243],{"class":702},"  \"ref\"",[415,3245,706],{"class":424},[415,3247,1741],{"class":709},[415,3249,288],{"class":424},[415,3251,3252,3255,3257],{"class":417,"line":1363},[415,3253,3254],{"class":702},"  \"processed_by\"",[415,3256,706],{"class":424},[415,3258,3259],{"class":709},"\"workstation-b\u002Ftriage-2026-09-27\"\n",[415,3261,3262],{"class":417,"line":1376},[415,3263,742],{"class":424},[406,3265,3267],{"className":688,"code":3266,"language":690,"meta":411,"style":411},"{\n  \"id\": 44,\n  \"uid\": \"019250f2-8c3e-7a4b-9d1e-2f3a4b5c6d7e\",\n  \"kind\": \"friction\",\n  \"schema_version\": 1,\n  \"key\": \"friction-workstation-a-019250f2\",\n  \"summary\": \"README install step 3 references a flag that no longer exists\",\n  \"machine\": \"workstation-a\",\n  \"model\": \"claude-fable-5-1\",\n  \"harness\": \"claude-code\",\n  \"project\": \"example\",\n  \"occurred_at\": \"2026-09-27T09:58:12.000000Z\",\n  \"context\": {\"client\": \"agentfeedback\u002F4.0.0\", \"git_commit\": \"a1b2c3d\", \"origin\": \"agent\"},\n  \"payload\": {\n    \"category\": \"documentation\",\n    \"details\": \"Step 3 says --init; the flag was removed in 3.0.\",\n    \"fix_ref\": \"example@a1b2c3d\",\n    \"fix_status\": \"applied\"\n  },\n  \"content_hash\": \"157cf352c13503c9cac14d40ba9ab1bccd2dd8c6bb6567903a9b68881bc79c04\",\n  \"created_at\": \"2026-09-27T10:00:01.123456Z\",\n  \"processed_at\": \"2026-09-27T14:02:00.000000Z\",\n  \"verdict\": \"fixed\",\n  \"resolution\": \"already applied by the reporter\",\n  \"ref\": \"example@a1b2c3d\",\n  \"processed_by\": \"workstation-b\u002Ftriage-2026-09-27\"\n}\n",[217,3268,3269,3273,3283,3293,3303,3313,3323,3333,3343,3353,3363,3373,3383,3413,3419,3429,3439,3449,3457,3461,3471,3482,3494,3504,3514,3524,3533],{"__ignoreMap":411},[415,3270,3271],{"class":417,"line":418},[415,3272,697],{"class":424},[415,3274,3275,3277,3279,3281],{"class":417,"line":438},[415,3276,2878],{"class":702},[415,3278,706],{"class":424},[415,3280,1555],{"class":702},[415,3282,288],{"class":424},[415,3284,3285,3287,3289,3291],{"class":417,"line":715},[415,3286,2889],{"class":702},[415,3288,706],{"class":424},[415,3290,1567],{"class":709},[415,3292,288],{"class":424},[415,3294,3295,3297,3299,3301],{"class":417,"line":728},[415,3296,1317],{"class":702},[415,3298,706],{"class":424},[415,3300,1322],{"class":709},[415,3302,288],{"class":424},[415,3304,3305,3307,3309,3311],{"class":417,"line":739},[415,3306,2910],{"class":702},[415,3308,706],{"class":424},[415,3310,1590],{"class":702},[415,3312,288],{"class":424},[415,3314,3315,3317,3319,3321],{"class":417,"line":1363},[415,3316,1329],{"class":702},[415,3318,706],{"class":424},[415,3320,1334],{"class":709},[415,3322,288],{"class":424},[415,3324,3325,3327,3329,3331],{"class":417,"line":1376},[415,3326,1341],{"class":702},[415,3328,706],{"class":424},[415,3330,1346],{"class":709},[415,3332,288],{"class":424},[415,3334,3335,3337,3339,3341],{"class":417,"line":1389},[415,3336,1353],{"class":702},[415,3338,706],{"class":424},[415,3340,1358],{"class":709},[415,3342,288],{"class":424},[415,3344,3345,3347,3349,3351],{"class":417,"line":1402},[415,3346,1366],{"class":702},[415,3348,706],{"class":424},[415,3350,1371],{"class":709},[415,3352,288],{"class":424},[415,3354,3355,3357,3359,3361],{"class":417,"line":1415},[415,3356,1379],{"class":702},[415,3358,706],{"class":424},[415,3360,1384],{"class":709},[415,3362,288],{"class":424},[415,3364,3365,3367,3369,3371],{"class":417,"line":1455},[415,3366,1392],{"class":702},[415,3368,706],{"class":424},[415,3370,1397],{"class":709},[415,3372,288],{"class":424},[415,3374,3375,3377,3379,3381],{"class":417,"line":1464},[415,3376,1405],{"class":702},[415,3378,706],{"class":424},[415,3380,1668],{"class":709},[415,3382,288],{"class":424},[415,3384,3385,3387,3389,3391,3393,3395,3397,3399,3401,3403,3405,3407,3409,3411],{"class":417,"line":1477},[415,3386,1418],{"class":702},[415,3388,1421],{"class":424},[415,3390,1434],{"class":702},[415,3392,706],{"class":424},[415,3394,1439],{"class":709},[415,3396,279],{"class":424},[415,3398,1424],{"class":702},[415,3400,706],{"class":424},[415,3402,1429],{"class":709},[415,3404,279],{"class":424},[415,3406,1444],{"class":702},[415,3408,706],{"class":424},[415,3410,1449],{"class":709},[415,3412,1452],{"class":424},[415,3414,3415,3417],{"class":417,"line":1490},[415,3416,1458],{"class":702},[415,3418,1461],{"class":424},[415,3420,3421,3423,3425,3427],{"class":417,"line":1503},[415,3422,1467],{"class":702},[415,3424,706],{"class":424},[415,3426,1472],{"class":709},[415,3428,288],{"class":424},[415,3430,3431,3433,3435,3437],{"class":417,"line":1514},[415,3432,1480],{"class":702},[415,3434,706],{"class":424},[415,3436,1485],{"class":709},[415,3438,288],{"class":424},[415,3440,3441,3443,3445,3447],{"class":417,"line":1520},[415,3442,1506],{"class":702},[415,3444,706],{"class":424},[415,3446,1741],{"class":709},[415,3448,288],{"class":424},[415,3450,3451,3453,3455],{"class":417,"line":1733},[415,3452,1493],{"class":702},[415,3454,706],{"class":424},[415,3456,1754],{"class":709},[415,3458,3459],{"class":417,"line":1746},[415,3460,1790],{"class":424},[415,3462,3463,3465,3467,3469],{"class":417,"line":1757},[415,3464,3069],{"class":702},[415,3466,706],{"class":424},[415,3468,1771],{"class":709},[415,3470,288],{"class":424},[415,3472,3473,3475,3477,3480],{"class":417,"line":1763},[415,3474,3080],{"class":702},[415,3476,706],{"class":424},[415,3478,3479],{"class":709},"\"2026-09-27T10:00:01.123456Z\"",[415,3481,288],{"class":424},[415,3483,3484,3487,3489,3492],{"class":417,"line":1776},[415,3485,3486],{"class":702},"  \"processed_at\"",[415,3488,706],{"class":424},[415,3490,3491],{"class":709},"\"2026-09-27T14:02:00.000000Z\"",[415,3493,288],{"class":424},[415,3495,3496,3498,3500,3502],{"class":417,"line":1787},[415,3497,3219],{"class":702},[415,3499,706],{"class":424},[415,3501,3224],{"class":709},[415,3503,288],{"class":424},[415,3505,3506,3508,3510,3512],{"class":417,"line":1793},[415,3507,3231],{"class":702},[415,3509,706],{"class":424},[415,3511,3236],{"class":709},[415,3513,288],{"class":424},[415,3515,3516,3518,3520,3522],{"class":417,"line":1802},[415,3517,3243],{"class":702},[415,3519,706],{"class":424},[415,3521,1741],{"class":709},[415,3523,288],{"class":424},[415,3525,3527,3529,3531],{"class":417,"line":3526},26,[415,3528,3254],{"class":702},[415,3530,706],{"class":424},[415,3532,3259],{"class":709},[415,3534,3536],{"class":417,"line":3535},27,[415,3537,742],{"class":424},[457,3539,3540,3551,3570,3612],{},[250,3541,3542,3543,551,3545,3547,3548,3550],{},"The body is validated strictly: an unknown member, a wrong type or a\n",[217,3544,682],{},[217,3546,2608],{}," is 400 ",[217,3549,2655],{},". No content field is\nwritable.",[250,3552,3553,3555,3556,605,3558,279,3560,279,3562,388,3564,3566,3567,242],{},[217,3554,2608],{}," defaults to ",[217,3557,2532],{},[217,3559,656],{},[217,3561,659],{},[217,3563,662],{},[217,3565,665],{}," are allowed only with ",[217,3568,3569],{},"processed=true",[250,3571,3572,3574,3575,288,3578,279,3581,279,3584,279,3587,279,3590,288,3593,605,3596,3598,3599,973,3601,3603,3604,3606,3607,3609,3610,242],{},[217,3573,656],{}," is a token of at most 64 bytes; documented values: ",[217,3576,3577],{},"fixed",[217,3579,3580],{},"invalid",[217,3582,3583],{},"duplicate",[217,3585,3586],{},"wont_fix",[217,3588,3589],{},"deferred",[217,3591,3592],{},"upstream",[217,3594,3595],{},"unverifiable",[217,3597,659],{}," is at most 2000 bytes, blank is 400. ",[217,3600,662],{},[217,3602,665],{}," are at most 200 bytes. A ",[217,3605,662],{}," that points at another\nsubmission holds that row's ",[217,3608,1001],{},", never its ",[217,3611,998],{},[250,3613,3614,3615,3617,3618,279,3620,3622,3623,3625,3626,605,3628,3630],{},"Marking sets ",[217,3616,653],{}," if unset. Re-marking with a different\n",[217,3619,656],{},[217,3621,659],{}," or ",[217,3624,662],{}," replaces them and keeps the original\n",[217,3627,653],{},[217,3629,2723],{}," clears all five processing fields.\nRedacted rows can be marked.",[1231,3632,3634],{"id":3633},"mark-a-batch","Mark a batch",[201,3636,3637,3640,3641,3643,3644,3647],{},[217,3638,3639],{},"POST \u002Fapi\u002Fv1\u002Fsubmissions\u002Fprocessed",": the same fields and rules as\n",[205,3642,292],{"href":291},", plus ",[217,3645,3646],{},"ids"," (1–500 positive integers, duplicates\ncollapsed). The answer classifies every id.",[406,3649,3651],{"className":408,"code":3650,"language":410,"meta":411,"style":411},"curl -sS -X POST \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fsubmissions\u002Fprocessed\" \\\n  -H \"Authorization: Bearer $AGENT_FEEDBACK_API_KEY\" \\\n  -H 'Content-Type: application\u002Fjson' \\\n  --data '{\"ids\": [44, 45, 999], \"processed\": true, \"verdict\": \"fixed\"}'\n",[217,3652,3653,3672,3684,3692],{"__ignoreMap":411},[415,3654,3655,3657,3659,3661,3663,3665,3667,3670],{"class":417,"line":418},[415,3656,1249],{"class":1248},[415,3658,1252],{"class":702},[415,3660,1255],{"class":702},[415,3662,1258],{"class":709},[415,3664,1261],{"class":709},[415,3666,1264],{"class":424},[415,3668,3669],{"class":709},"\u002Fapi\u002Fv1\u002Fsubmissions\u002Fprocessed\"",[415,3671,1270],{"class":702},[415,3673,3674,3676,3678,3680,3682],{"class":417,"line":438},[415,3675,1275],{"class":702},[415,3677,1278],{"class":709},[415,3679,1281],{"class":424},[415,3681,1284],{"class":709},[415,3683,1270],{"class":702},[415,3685,3686,3688,3690],{"class":417,"line":715},[415,3687,1275],{"class":702},[415,3689,1293],{"class":709},[415,3691,1270],{"class":702},[415,3693,3694,3696],{"class":417,"line":728},[415,3695,1300],{"class":702},[415,3697,3698],{"class":709}," '{\"ids\": [44, 45, 999], \"processed\": true, \"verdict\": \"fixed\"}'\n",[406,3700,3702],{"className":688,"code":3701,"language":690,"meta":411,"style":411},"{\"ids\": [44, 45, 999], \"processed\": true, \"verdict\": \"fixed\"}\n",[217,3703,3704],{"__ignoreMap":411},[415,3705,3706,3708,3711,3714,3716,3718,3720,3722,3725,3728,3731,3733,3735,3737,3740,3742,3744],{"class":417,"line":418},[415,3707,1823],{"class":424},[415,3709,3710],{"class":702},"\"ids\"",[415,3712,3713],{"class":424},": [",[415,3715,1555],{"class":702},[415,3717,279],{"class":424},[415,3719,1885],{"class":702},[415,3721,279],{"class":424},[415,3723,3724],{"class":702},"999",[415,3726,3727],{"class":424},"], ",[415,3729,3730],{"class":702},"\"processed\"",[415,3732,706],{"class":424},[415,3734,2532],{"class":702},[415,3736,279],{"class":424},[415,3738,3739],{"class":702},"\"verdict\"",[415,3741,706],{"class":424},[415,3743,3224],{"class":709},[415,3745,742],{"class":424},[406,3747,3749],{"className":688,"code":3748,"language":690,"meta":411,"style":411},"{\"processed\": true, \"verdict\": \"fixed\", \"updated\": [45], \"unchanged\": [44], \"not_found\": [999]}\n",[217,3750,3751],{"__ignoreMap":411},[415,3752,3753,3755,3757,3759,3761,3763,3765,3767,3769,3771,3774,3776,3778,3780,3783,3785,3787,3789,3791,3793,3795],{"class":417,"line":418},[415,3754,1823],{"class":424},[415,3756,3730],{"class":702},[415,3758,706],{"class":424},[415,3760,2532],{"class":702},[415,3762,279],{"class":424},[415,3764,3739],{"class":702},[415,3766,706],{"class":424},[415,3768,3224],{"class":709},[415,3770,279],{"class":424},[415,3772,3773],{"class":702},"\"updated\"",[415,3775,3713],{"class":424},[415,3777,1885],{"class":702},[415,3779,3727],{"class":424},[415,3781,3782],{"class":702},"\"unchanged\"",[415,3784,3713],{"class":424},[415,3786,1555],{"class":702},[415,3788,3727],{"class":424},[415,3790,3106],{"class":702},[415,3792,3713],{"class":424},[415,3794,3724],{"class":702},[415,3796,3797],{"class":424},"]}\n",[201,3799,3800,3803,3804,3807,3808,3810],{},[217,3801,3802],{},"updated",": the row changed. ",[217,3805,3806],{},"unchanged",": already in the requested state.\n",[217,3809,604],{},": no such id.",[1231,3812,3813],{"id":300},"Redact",[201,3815,3816,3819,3820,1039,3822,279,3825,347,3827,3829,3830,3832,3833,279,3835,279,3837,279,3839,279,3841,288,3843,279,3845,279,3847,279,3849,279,3851,279,3853,288,3855,3857],{},[217,3817,3818],{},"DELETE \u002Fapi\u002Fv1\u002Fsubmissions\u002F{id}"," replaces the record with a tombstone:\n",[217,3821,976],{},[217,3823,3824],{},"{\"redacted\": true}",[217,3826,955],{},[217,3828,972],{}," are removed,\n",[217,3831,1012],{}," is set. ",[217,3834,998],{},[217,3836,1001],{},[217,3838,947],{},[217,3840,950],{},[217,3842,449],{},[217,3844,958],{},[217,3846,961],{},[217,3848,964],{},[217,3850,967],{},[217,3852,639],{},[217,3854,1005],{},[217,3856,1008],{}," and the processing fields stay. Repeating it is 200 unchanged;\n404 when absent. Redaction is not reversible.",[406,3859,3861],{"className":408,"code":3860,"language":410,"meta":411,"style":411},"curl -sS -X DELETE -H \"Authorization: Bearer $AGENT_FEEDBACK_API_KEY\" \\\n  \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fsubmissions\u002F45\"\n",[217,3862,3863,3884],{"__ignoreMap":411},[415,3864,3865,3867,3869,3871,3874,3876,3878,3880,3882],{"class":417,"line":418},[415,3866,1249],{"class":1248},[415,3868,1252],{"class":702},[415,3870,1255],{"class":702},[415,3872,3873],{"class":709}," DELETE",[415,3875,2366],{"class":702},[415,3877,1278],{"class":709},[415,3879,1281],{"class":424},[415,3881,1284],{"class":709},[415,3883,1270],{"class":702},[415,3885,3886,3888,3890],{"class":417,"line":438},[415,3887,2379],{"class":709},[415,3889,1264],{"class":424},[415,3891,3892],{"class":709},"\u002Fapi\u002Fv1\u002Fsubmissions\u002F45\"\n",[406,3894,3896],{"className":688,"code":3895,"language":690,"meta":411,"style":411},"{\n  \"id\": 45,\n  \"uid\": \"019250f4-3d1a-7e52-8c0b-6f1e2d3c4b5a\",\n  \"kind\": \"unknown\",\n  \"schema_version\": 1,\n  \"machine\": \"workstation-a\",\n  \"payload\": {\"redacted\": true},\n  \"content_hash\": \"e4e4baa28c3c46a2cd031183d2c1fc85710c9ffb7d593ca9e84302d288f677c2\",\n  \"created_at\": \"2026-09-27T10:02:40.654321Z\",\n  \"processed_at\": \"2026-09-27T14:05:00.000000Z\",\n  \"redacted_at\": \"2026-09-27T14:10:00.000000Z\",\n  \"verdict\": \"fixed\"\n}\n",[217,3897,3898,3902,3912,3922,3932,3942,3952,3967,3977,3988,3999,4011,4020],{"__ignoreMap":411},[415,3899,3900],{"class":417,"line":418},[415,3901,697],{"class":424},[415,3903,3904,3906,3908,3910],{"class":417,"line":438},[415,3905,2878],{"class":702},[415,3907,706],{"class":424},[415,3909,1885],{"class":702},[415,3911,288],{"class":424},[415,3913,3914,3916,3918,3920],{"class":417,"line":715},[415,3915,2889],{"class":702},[415,3917,706],{"class":424},[415,3919,1896],{"class":709},[415,3921,288],{"class":424},[415,3923,3924,3926,3928,3930],{"class":417,"line":728},[415,3925,1317],{"class":702},[415,3927,706],{"class":424},[415,3929,1907],{"class":709},[415,3931,288],{"class":424},[415,3933,3934,3936,3938,3940],{"class":417,"line":739},[415,3935,2910],{"class":702},[415,3937,706],{"class":424},[415,3939,1590],{"class":702},[415,3941,288],{"class":424},[415,3943,3944,3946,3948,3950],{"class":417,"line":1363},[415,3945,1353],{"class":702},[415,3947,706],{"class":424},[415,3949,1358],{"class":709},[415,3951,288],{"class":424},[415,3953,3954,3956,3958,3961,3963,3965],{"class":417,"line":1376},[415,3955,1458],{"class":702},[415,3957,1421],{"class":424},[415,3959,3960],{"class":702},"\"redacted\"",[415,3962,706],{"class":424},[415,3964,2532],{"class":702},[415,3966,1452],{"class":424},[415,3968,3969,3971,3973,3975],{"class":417,"line":1389},[415,3970,3069],{"class":702},[415,3972,706],{"class":424},[415,3974,1970],{"class":709},[415,3976,288],{"class":424},[415,3978,3979,3981,3983,3986],{"class":417,"line":1402},[415,3980,3080],{"class":702},[415,3982,706],{"class":424},[415,3984,3985],{"class":709},"\"2026-09-27T10:02:40.654321Z\"",[415,3987,288],{"class":424},[415,3989,3990,3992,3994,3997],{"class":417,"line":1415},[415,3991,3486],{"class":702},[415,3993,706],{"class":424},[415,3995,3996],{"class":709},"\"2026-09-27T14:05:00.000000Z\"",[415,3998,288],{"class":424},[415,4000,4001,4004,4006,4009],{"class":417,"line":1455},[415,4002,4003],{"class":702},"  \"redacted_at\"",[415,4005,706],{"class":424},[415,4007,4008],{"class":709},"\"2026-09-27T14:10:00.000000Z\"",[415,4010,288],{"class":424},[415,4012,4013,4015,4017],{"class":417,"line":1464},[415,4014,3219],{"class":702},[415,4016,706],{"class":424},[415,4018,4019],{"class":709},"\"fixed\"\n",[415,4021,4022],{"class":417,"line":1477},[415,4023,742],{"class":424},[1231,4025,4026],{"id":304},"Stats",[201,4028,4029,4032,4033,4035,4036,347,4038,673],{},[217,4030,4031],{},"GET \u002Fapi\u002Fv1\u002Fstats"," aggregates over the same filters as ",[205,4034,283],{"href":282},"\n(everything except the cursors, ",[217,4037,2676],{},[217,4039,4040],{},"include",[406,4042,4044],{"className":408,"code":4043,"language":410,"meta":411,"style":411},"curl -sS -H \"Authorization: Bearer $AGENT_FEEDBACK_API_KEY\" \\\n  \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fstats?by=project,category&top=1&bucket=week\"\n",[217,4045,4046,4062],{"__ignoreMap":411},[415,4047,4048,4050,4052,4054,4056,4058,4060],{"class":417,"line":418},[415,4049,1249],{"class":1248},[415,4051,1252],{"class":702},[415,4053,2366],{"class":702},[415,4055,1278],{"class":709},[415,4057,1281],{"class":424},[415,4059,1284],{"class":709},[415,4061,1270],{"class":702},[415,4063,4064,4066,4068],{"class":417,"line":438},[415,4065,2379],{"class":709},[415,4067,1264],{"class":424},[415,4069,4070],{"class":709},"\u002Fapi\u002Fv1\u002Fstats?by=project,category&top=1&bucket=week\"\n",[406,4072,4074],{"className":688,"code":4073,"language":690,"meta":411,"style":411},"{\n  \"total\": 245,\n  \"open\": 61,\n  \"processed\": 184,\n  \"redacted\": 2,\n  \"groups\": [\n    {\"keys\": {\"project\": \"example\", \"category\": \"documentation\"}, \"total\": 40, \"open\": 12, \"processed\": 28}\n  ],\n  \"recurring\": [\n    {\n      \"content_hash\": \"157cf352c13503c9cac14d40ba9ab1bccd2dd8c6bb6567903a9b68881bc79c04\",\n      \"count\": 7,\n      \"first_id\": 44,\n      \"last_id\": 1187,\n      \"summary\": \"README install step 3 references a flag that no longer exists\",\n      \"kind\": \"friction\",\n      \"project\": \"example\"\n    }\n  ],\n  \"series\": [\n    {\"bucket\": \"2026-09-21\", \"total\": 31, \"open\": 4}\n  ]\n}\n",[217,4075,4076,4080,4091,4103,4114,4125,4132,4188,4192,4199,4203,4213,4225,4236,4248,4258,4268,4278,4282,4286,4293,4325,4329],{"__ignoreMap":411},[415,4077,4078],{"class":417,"line":418},[415,4079,697],{"class":424},[415,4081,4082,4084,4086,4089],{"class":417,"line":438},[415,4083,2515],{"class":702},[415,4085,706],{"class":424},[415,4087,4088],{"class":702},"245",[415,4090,288],{"class":424},[415,4092,4093,4096,4098,4101],{"class":417,"line":715},[415,4094,4095],{"class":702},"  \"open\"",[415,4097,706],{"class":424},[415,4099,4100],{"class":702},"61",[415,4102,288],{"class":424},[415,4104,4105,4107,4109,4112],{"class":417,"line":728},[415,4106,3208],{"class":702},[415,4108,706],{"class":424},[415,4110,4111],{"class":702},"184",[415,4113,288],{"class":424},[415,4115,4116,4119,4121,4123],{"class":417,"line":739},[415,4117,4118],{"class":702},"  \"redacted\"",[415,4120,706],{"class":424},[415,4122,2520],{"class":702},[415,4124,288],{"class":424},[415,4126,4127,4130],{"class":417,"line":1363},[415,4128,4129],{"class":702},"  \"groups\"",[415,4131,1992],{"class":424},[415,4133,4134,4136,4139,4141,4144,4146,4148,4150,4152,4154,4156,4159,4162,4164,4167,4169,4172,4174,4177,4179,4181,4183,4186],{"class":417,"line":1376},[415,4135,1997],{"class":424},[415,4137,4138],{"class":702},"\"keys\"",[415,4140,1421],{"class":424},[415,4142,4143],{"class":702},"\"project\"",[415,4145,706],{"class":424},[415,4147,1397],{"class":709},[415,4149,279],{"class":424},[415,4151,1836],{"class":702},[415,4153,706],{"class":424},[415,4155,1472],{"class":709},[415,4157,4158],{"class":424},"}, ",[415,4160,4161],{"class":702},"\"total\"",[415,4163,706],{"class":424},[415,4165,4166],{"class":702},"40",[415,4168,279],{"class":424},[415,4170,4171],{"class":702},"\"open\"",[415,4173,706],{"class":424},[415,4175,4176],{"class":702},"12",[415,4178,279],{"class":424},[415,4180,3730],{"class":702},[415,4182,706],{"class":424},[415,4184,4185],{"class":702},"28",[415,4187,742],{"class":424},[415,4189,4190],{"class":417,"line":1389},[415,4191,2499],{"class":424},[415,4193,4194,4197],{"class":417,"line":1402},[415,4195,4196],{"class":702},"  \"recurring\"",[415,4198,1992],{"class":424},[415,4200,4201],{"class":417,"line":1415},[415,4202,2230],{"class":424},[415,4204,4205,4207,4209,4211],{"class":417,"line":1455},[415,4206,2475],{"class":702},[415,4208,706],{"class":424},[415,4210,1771],{"class":709},[415,4212,288],{"class":424},[415,4214,4215,4218,4220,4223],{"class":417,"line":1464},[415,4216,4217],{"class":702},"      \"count\"",[415,4219,706],{"class":424},[415,4221,4222],{"class":702},"7",[415,4224,288],{"class":424},[415,4226,4227,4230,4232,4234],{"class":417,"line":1477},[415,4228,4229],{"class":702},"      \"first_id\"",[415,4231,706],{"class":424},[415,4233,1555],{"class":702},[415,4235,288],{"class":424},[415,4237,4238,4241,4243,4246],{"class":417,"line":1490},[415,4239,4240],{"class":702},"      \"last_id\"",[415,4242,706],{"class":424},[415,4244,4245],{"class":702},"1187",[415,4247,288],{"class":424},[415,4249,4250,4252,4254,4256],{"class":417,"line":1503},[415,4251,2453],{"class":702},[415,4253,706],{"class":424},[415,4255,1346],{"class":709},[415,4257,288],{"class":424},[415,4259,4260,4262,4264,4266],{"class":417,"line":1514},[415,4261,2431],{"class":702},[415,4263,706],{"class":424},[415,4265,1322],{"class":709},[415,4267,288],{"class":424},[415,4269,4270,4273,4275],{"class":417,"line":1520},[415,4271,4272],{"class":702},"      \"project\"",[415,4274,706],{"class":424},[415,4276,4277],{"class":709},"\"example\"\n",[415,4279,4280],{"class":417,"line":1733},[415,4281,2289],{"class":424},[415,4283,4284],{"class":417,"line":1746},[415,4285,2499],{"class":424},[415,4287,4288,4291],{"class":417,"line":1757},[415,4289,4290],{"class":702},"  \"series\"",[415,4292,1992],{"class":424},[415,4294,4295,4297,4300,4302,4305,4307,4309,4311,4314,4316,4318,4320,4323],{"class":417,"line":1763},[415,4296,1997],{"class":424},[415,4298,4299],{"class":702},"\"bucket\"",[415,4301,706],{"class":424},[415,4303,4304],{"class":709},"\"2026-09-21\"",[415,4306,279],{"class":424},[415,4308,4161],{"class":702},[415,4310,706],{"class":424},[415,4312,4313],{"class":702},"31",[415,4315,279],{"class":424},[415,4317,4171],{"class":702},[415,4319,706],{"class":424},[415,4321,4322],{"class":702},"4",[415,4324,742],{"class":424},[415,4326,4327],{"class":417,"line":1776},[415,4328,2155],{"class":424},[415,4330,4331],{"class":417,"line":1787},[415,4332,742],{"class":424},[457,4334,4335,4371,4377,4392],{},[250,4336,4337,4340,4341,279,4343,279,4345,288,4347,279,4349,279,4351,279,4353,279,4355,288,4357,279,4359,4361,4362,4365,4366,4368,4369,242],{},[217,4338,4339],{},"by",": a comma list of up to three of ",[217,4342,947],{},[217,4344,967],{},[217,4346,2588],{},[217,4348,2591],{},[217,4350,958],{},[217,4352,961],{},[217,4354,964],{},[217,4356,656],{},[217,4358,950],{},[217,4360,2595],{},". Absent: no ",[217,4363,4364],{},"groups",". Groups are sorted by\n",[217,4367,2710],{}," descending, at most 100; a row without a value for a listed key is\nin no group, so group totals need not add up to ",[217,4370,2710],{},[250,4372,4373,4376],{},[217,4374,4375],{},"top",": 0–50, default 10; how many recurring content hashes to return.",[250,4378,4379,706,4382,3622,4385,4388,4389,4391],{},[217,4380,4381],{},"bucket",[217,4383,4384],{},"day",[217,4386,4387],{},"week"," adds a time series on the ",[217,4390,2626],{}," timestamp.",[250,4393,4394,4395,242],{},"Invalid parameters are 400 ",[217,4396,2655],{},[1231,4398,4399],{"id":308},"Export",[201,4401,4402,4405,4406,4409,4410,605,4412,4415],{},[217,4403,4404],{},"GET \u002Fapi\u002Fv1\u002Fexport"," streams NDJSON, export format 2\n(",[217,4407,4408],{},"Content-Type: application\u002Fx-ndjson","), in one read transaction, ascending\n",[217,4411,998],{},[217,4413,4414],{},"HEAD \u002Fapi\u002Fv1\u002Fexport"," answers the same headers with no body.",[406,4417,4419],{"className":408,"code":4418,"language":410,"meta":411,"style":411},"curl -sS -H \"Authorization: Bearer $AGENT_FEEDBACK_API_KEY\" \\\n  \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fexport?after_id=43\" > feedback.ndjson\n",[217,4420,4421,4437],{"__ignoreMap":411},[415,4422,4423,4425,4427,4429,4431,4433,4435],{"class":417,"line":418},[415,4424,1249],{"class":1248},[415,4426,1252],{"class":702},[415,4428,2366],{"class":702},[415,4430,1278],{"class":709},[415,4432,1281],{"class":424},[415,4434,1284],{"class":709},[415,4436,1270],{"class":702},[415,4438,4439,4441,4443,4446,4449],{"class":417,"line":438},[415,4440,2379],{"class":709},[415,4442,1264],{"class":424},[415,4444,4445],{"class":709},"\u002Fapi\u002Fv1\u002Fexport?after_id=43\"",[415,4447,4448],{"class":421}," >",[415,4450,4451],{"class":709}," feedback.ndjson\n",[406,4453,4455],{"className":408,"code":4454,"language":410,"meta":411,"style":411},"curl -sS -I -H \"Authorization: Bearer $AGENT_FEEDBACK_API_KEY\" \\\n  \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fexport\"\n",[217,4456,4457,4476],{"__ignoreMap":411},[415,4458,4459,4461,4463,4466,4468,4470,4472,4474],{"class":417,"line":418},[415,4460,1249],{"class":1248},[415,4462,1252],{"class":702},[415,4464,4465],{"class":702}," -I",[415,4467,2366],{"class":702},[415,4469,1278],{"class":709},[415,4471,1281],{"class":424},[415,4473,1284],{"class":709},[415,4475,1270],{"class":702},[415,4477,4478,4480,4482],{"class":417,"line":438},[415,4479,2379],{"class":709},[415,4481,1264],{"class":424},[415,4483,4484],{"class":709},"\u002Fapi\u002Fv1\u002Fexport\"\n",[406,4486,4491],{"className":4487,"code":4489,"language":4490,"meta":411},[4488],"language-text","{\"export_format\":2,\"kind\":null,\"since\":null,\"after_id\":43,\"exported_at\":\"2026-09-27T15:00:00.000000Z\"}\n{\"id\":44,\"uid\":\"019250f2-8c3e-7a4b-9d1e-2f3a4b5c6d7e\",\"kind\":\"friction\",\"schema_version\":1,\"key\":\"friction-workstation-a-019250f2\",\"summary\":\"README install step 3 references a flag that no longer exists\",\"machine\":\"workstation-a\",\"model\":\"claude-fable-5-1\",\"harness\":\"claude-code\",\"project\":\"example\",\"occurred_at\":\"2026-09-27T09:58:12.000000Z\",\"context\":{\"client\":\"agentfeedback\u002F4.0.0\",\"git_commit\":\"a1b2c3d\",\"origin\":\"agent\"},\"payload\":{\"category\":\"documentation\",\"details\":\"Step 3 says --init; the flag was removed in 3.0.\",\"fix_ref\":\"example@a1b2c3d\",\"fix_status\":\"applied\"},\"content_hash\":\"157cf352c13503c9cac14d40ba9ab1bccd2dd8c6bb6567903a9b68881bc79c04\",\"created_at\":\"2026-09-27T10:00:01.123456Z\",\"processed_at\":\"2026-09-27T14:02:00.000000Z\",\"verdict\":\"fixed\",\"resolution\":\"already applied by the reporter\",\"ref\":\"example@a1b2c3d\",\"processed_by\":\"workstation-b\u002Ftriage-2026-09-27\"}\n{\"id\":45,\"uid\":\"019250f4-3d1a-7e52-8c0b-6f1e2d3c4b5a\",\"kind\":\"unknown\",\"schema_version\":1,\"machine\":\"workstation-a\",\"payload\":{\"redacted\":true},\"content_hash\":\"e4e4baa28c3c46a2cd031183d2c1fc85710c9ffb7d593ca9e84302d288f677c2\",\"created_at\":\"2026-09-27T10:02:40.654321Z\",\"processed_at\":\"2026-09-27T14:05:00.000000Z\",\"redacted_at\":\"2026-09-27T14:10:00.000000Z\",\"verdict\":\"fixed\"}\n{\"export_complete\":true,\"count\":2,\"first_id\":44,\"last_id\":45,\"sha256\":\"dc5af905018c8d65122241337d76b7326e4eb44758113483577274e0a2898076\"}\n","text",[217,4492,4489],{"__ignoreMap":411},[457,4494,4495,4518,4524,4546],{},[250,4496,4497,4500,4501,4504,4505,288,4507,279,4509,977,4512,4514,4515,242],{},[234,4498,4499],{},"Header"," (line 1): ",[217,4502,4503],{},"export_format",", then the filters echoed (",[217,4506,947],{},[217,4508,633],{},[217,4510,4511],{},"after_id",[217,4513,682],{}," when unset) and ",[217,4516,4517],{},"exported_at",[250,4519,4520,4523],{},[234,4521,4522],{},"Records",": one full record per line; tombstones are exported as\ntombstones.",[250,4525,4526,4529,4530,279,4533,279,4536,288,4539,347,4542,4545],{},[234,4527,4528],{},"Trailer"," (last line): ",[217,4531,4532],{},"export_complete",[217,4534,4535],{},"count",[217,4537,4538],{},"first_id",[217,4540,4541],{},"last_id",[217,4543,4544],{},"sha256",", the lowercase hex SHA-256 over the record lines\nonly, each with its trailing newline, header and trailer excluded, in\norder. A stream without the trailer, or whose count or digest disagrees\nwith it, is damaged.",[250,4547,4548,706,4550,279,4552,4554,4555,2599,4557,4559,4560,2599,4563,4565,4566,4568,4569,242],{},[234,4549,2566],{},[217,4551,947],{},[217,4553,633],{}," (inclusive, on ",[217,4556,1008],{},[217,4558,4511],{},"\n(",[217,4561,4562],{},"id > after_id",[217,4564,2676],{}," (1–500; absent means everything). Page a large\nexport with ",[217,4567,4511],{}," set to the previous trailer's ",[217,4570,4541],{},[201,4572,4573,4574,242],{},"Backups, restore and migration with the CLI are in\n",[205,4575,374],{"href":4576},"\u002Fdocs\u002Freference\u002Foperate#restore-and-migration",[1231,4578,4579],{"id":312},"Import",[201,4581,4582,4585,4586,4588],{},[217,4583,4584],{},"POST \u002Fapi\u002Fv1\u002Fimport"," takes an export-format-2 NDJSON body\n(",[217,4587,4408],{},", at most 33554432 bytes).",[406,4590,4592],{"className":408,"code":4591,"language":410,"meta":411,"style":411},"curl -sS -X POST \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fimport\" \\\n  -H \"Authorization: Bearer $AGENT_FEEDBACK_API_KEY\" \\\n  -H 'Content-Type: application\u002Fx-ndjson' \\\n  --data-binary @feedback.ndjson\n",[217,4593,4594,4613,4625,4634],{"__ignoreMap":411},[415,4595,4596,4598,4600,4602,4604,4606,4608,4611],{"class":417,"line":418},[415,4597,1249],{"class":1248},[415,4599,1252],{"class":702},[415,4601,1255],{"class":702},[415,4603,1258],{"class":709},[415,4605,1261],{"class":709},[415,4607,1264],{"class":424},[415,4609,4610],{"class":709},"\u002Fapi\u002Fv1\u002Fimport\"",[415,4612,1270],{"class":702},[415,4614,4615,4617,4619,4621,4623],{"class":417,"line":438},[415,4616,1275],{"class":702},[415,4618,1278],{"class":709},[415,4620,1281],{"class":424},[415,4622,1284],{"class":709},[415,4624,1270],{"class":702},[415,4626,4627,4629,4632],{"class":417,"line":715},[415,4628,1275],{"class":702},[415,4630,4631],{"class":709}," 'Content-Type: application\u002Fx-ndjson'",[415,4633,1270],{"class":702},[415,4635,4636,4639],{"class":417,"line":728},[415,4637,4638],{"class":702},"  --data-binary",[415,4640,4641],{"class":709}," @feedback.ndjson\n",[406,4643,4645],{"className":688,"code":4644,"language":690,"meta":411,"style":411},"{\n  \"imported\": 1,\n  \"skipped\": 1,\n  \"conflicts\": [\n    {\"line\": 2, \"uid\": \"019250f2-8c3e-7a4b-9d1e-2f3a4b5c6d7e\", \"existing_id\": 12, \"reason\": \"key_mismatch\"}\n  ],\n  \"warnings\": [],\n  \"first_id\": 301,\n  \"last_id\": 301\n}\n",[217,4646,4647,4651,4662,4673,4680,4721,4725,4732,4744,4754],{"__ignoreMap":411},[415,4648,4649],{"class":417,"line":418},[415,4650,697],{"class":424},[415,4652,4653,4656,4658,4660],{"class":417,"line":438},[415,4654,4655],{"class":702},"  \"imported\"",[415,4657,706],{"class":424},[415,4659,1590],{"class":702},[415,4661,288],{"class":424},[415,4663,4664,4667,4669,4671],{"class":417,"line":715},[415,4665,4666],{"class":702},"  \"skipped\"",[415,4668,706],{"class":424},[415,4670,1590],{"class":702},[415,4672,288],{"class":424},[415,4674,4675,4678],{"class":417,"line":728},[415,4676,4677],{"class":702},"  \"conflicts\"",[415,4679,1992],{"class":424},[415,4681,4682,4684,4687,4689,4691,4693,4696,4698,4700,4702,4705,4707,4709,4711,4714,4716,4719],{"class":417,"line":739},[415,4683,1997],{"class":424},[415,4685,4686],{"class":702},"\"line\"",[415,4688,706],{"class":424},[415,4690,2520],{"class":702},[415,4692,279],{"class":424},[415,4694,4695],{"class":702},"\"uid\"",[415,4697,706],{"class":424},[415,4699,1567],{"class":709},[415,4701,279],{"class":424},[415,4703,4704],{"class":702},"\"existing_id\"",[415,4706,706],{"class":424},[415,4708,4176],{"class":702},[415,4710,279],{"class":424},[415,4712,4713],{"class":702},"\"reason\"",[415,4715,706],{"class":424},[415,4717,4718],{"class":709},"\"key_mismatch\"",[415,4720,742],{"class":424},[415,4722,4723],{"class":417,"line":1363},[415,4724,2499],{"class":424},[415,4726,4727,4729],{"class":417,"line":1376},[415,4728,1796],{"class":702},[415,4730,4731],{"class":424},": [],\n",[415,4733,4734,4737,4739,4742],{"class":417,"line":1389},[415,4735,4736],{"class":702},"  \"first_id\"",[415,4738,706],{"class":424},[415,4740,4741],{"class":702},"301",[415,4743,288],{"class":424},[415,4745,4746,4749,4751],{"class":417,"line":1402},[415,4747,4748],{"class":702},"  \"last_id\"",[415,4750,706],{"class":424},[415,4752,4753],{"class":702},"301\n",[415,4755,4756],{"class":417,"line":1415},[415,4757,742],{"class":424},[457,4759,4760,4779,4788,4793,4805],{},[250,4761,4762,4763,4765,4766,279,4768,279,4770,4772,4773,4775,4776,4778],{},"The whole body is read and verified (count, digest, one JSON object per\nrecord line) before anything is written. A record whose ",[217,4764,1001],{}," is not an\nRFC 9562 UUID, or whose ",[217,4767,1008],{},[217,4769,639],{},[217,4771,653],{}," or\n",[217,4774,1012],{}," does not parse as RFC 3339, is 400 ",[217,4777,2655],{}," naming\nthe line, and nothing is written.",[250,4780,4781,4782,4784,4785,4787],{},"Envelope members pass through the same normalisation and limits as\ncreate; violations are ",[217,4783,1185],{}," with a ",[217,4786,417],{},", never rejections.",[250,4789,4790,4792],{},[217,4791,1005],{}," is recomputed for ordinary records and must equal the\nexported value, else 400 naming the line; tombstones keep the exported\nhash.",[250,4794,4795,4796,977,4798,279,4800,279,4802,4804],{},"Each imported record gets a new ",[217,4797,998],{},[217,4799,1001],{},[217,4801,1008],{},[217,4803,639],{},"\nand the processing fields are kept.",[250,4806,4807,4808,4810,4811,4814,4815,4818,4819,4821,4822,4824,4825,4828],{},"An existing ",[217,4809,1001],{}," is skipped and counted in ",[217,4812,4813],{},"skipped","; redactions and\nprocessing marks never propagate to a stored row. An existing\n",[217,4816,4817],{},"(kind, key)"," under a different ",[217,4820,1001],{}," is skipped and counted when the\n",[217,4823,1005],{}," matches, otherwise skipped, counted and listed under\n",[217,4826,4827],{},"conflicts",". A conflict never fails the request.",[1231,4830,4831],{"id":316},"Schemas",[201,4833,4834,4836,4837,4840],{},[217,4835,483],{}," lists the kinds and versions the server knows,\nincluding ",[217,4838,4839],{},"envelope",". No key.",[406,4842,4844],{"className":408,"code":4843,"language":410,"meta":411,"style":411},"curl -sS \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fschemas\"\n",[217,4845,4846],{"__ignoreMap":411},[415,4847,4848,4850,4852,4854,4856],{"class":417,"line":418},[415,4849,1249],{"class":1248},[415,4851,1252],{"class":702},[415,4853,1261],{"class":709},[415,4855,1264],{"class":424},[415,4857,4858],{"class":709},"\u002Fapi\u002Fv1\u002Fschemas\"\n",[406,4860,4862],{"className":688,"code":4861,"language":690,"meta":411,"style":411},"{\n  \"schemas\": [\n    {\"kind\": \"envelope\", \"versions\": [1]},\n    {\"kind\": \"friction\", \"versions\": [1]},\n    {\"kind\": \"review\", \"versions\": [1]}\n  ]\n}\n",[217,4863,4864,4868,4875,4899,4919,4940,4944],{"__ignoreMap":411},[415,4865,4866],{"class":417,"line":418},[415,4867,697],{"class":424},[415,4869,4870,4873],{"class":417,"line":438},[415,4871,4872],{"class":702},"  \"schemas\"",[415,4874,1992],{"class":424},[415,4876,4877,4879,4882,4884,4887,4889,4892,4894,4896],{"class":417,"line":715},[415,4878,1997],{"class":424},[415,4880,4881],{"class":702},"\"kind\"",[415,4883,706],{"class":424},[415,4885,4886],{"class":709},"\"envelope\"",[415,4888,279],{"class":424},[415,4890,4891],{"class":702},"\"versions\"",[415,4893,3713],{"class":424},[415,4895,1590],{"class":702},[415,4897,4898],{"class":424},"]},\n",[415,4900,4901,4903,4905,4907,4909,4911,4913,4915,4917],{"class":417,"line":728},[415,4902,1997],{"class":424},[415,4904,4881],{"class":702},[415,4906,706],{"class":424},[415,4908,1322],{"class":709},[415,4910,279],{"class":424},[415,4912,4891],{"class":702},[415,4914,3713],{"class":424},[415,4916,1590],{"class":702},[415,4918,4898],{"class":424},[415,4920,4921,4923,4925,4927,4930,4932,4934,4936,4938],{"class":417,"line":739},[415,4922,1997],{"class":424},[415,4924,4881],{"class":702},[415,4926,706],{"class":424},[415,4928,4929],{"class":709},"\"review\"",[415,4931,279],{"class":424},[415,4933,4891],{"class":702},[415,4935,3713],{"class":424},[415,4937,1590],{"class":702},[415,4939,3797],{"class":424},[415,4941,4942],{"class":417,"line":1363},[415,4943,2155],{"class":424},[415,4945,4946],{"class":417,"line":1376},[415,4947,742],{"class":424},[201,4949,4950,4952,4953,977,4956,4958,4959,4962,4963,242],{},[217,4951,486],{}," returns one JSON Schema document\nverbatim, ",[217,4954,4955],{},"Content-Type: application\u002Fschema+json",[217,4957,4839],{}," is a valid\n",[217,4960,4961],{},"{kind}",". 404 when the pair is unknown. No key. The body is the file under\n",[205,4964,4966],{"href":214,"rel":4965},[209],[217,4967,219],{},[406,4969,4971],{"className":408,"code":4970,"language":410,"meta":411,"style":411},"curl -sS \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fschemas\u002Ffriction\u002F1\"\n",[217,4972,4973],{"__ignoreMap":411},[415,4974,4975,4977,4979,4981,4983],{"class":417,"line":418},[415,4976,1249],{"class":1248},[415,4978,1252],{"class":702},[415,4980,1261],{"class":709},[415,4982,1264],{"class":424},[415,4984,4985],{"class":709},"\u002Fapi\u002Fv1\u002Fschemas\u002Ffriction\u002F1\"\n",[1231,4987,4988],{"id":320},"Meta",[201,4990,4991,4993,4994,4997,4998,5001],{},[217,4992,902],{}," returns versions, limits, kinds and features.\n",[217,4995,4996],{},"client.min_version"," is the oldest client release that speaks this API,\nraised only when a server change breaks older clients; a client older than\nit should report plainly that it is too old. ",[217,4999,5000],{},"client.latest_known"," is the\nserver version.",[406,5003,5005],{"className":408,"code":5004,"language":410,"meta":411,"style":411},"curl -sS -H \"Authorization: Bearer $AGENT_FEEDBACK_API_KEY\" \\\n  \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fmeta\"\n",[217,5006,5007,5023],{"__ignoreMap":411},[415,5008,5009,5011,5013,5015,5017,5019,5021],{"class":417,"line":418},[415,5010,1249],{"class":1248},[415,5012,1252],{"class":702},[415,5014,2366],{"class":702},[415,5016,1278],{"class":709},[415,5018,1281],{"class":424},[415,5020,1284],{"class":709},[415,5022,1270],{"class":702},[415,5024,5025,5027,5029],{"class":417,"line":438},[415,5026,2379],{"class":709},[415,5028,1264],{"class":424},[415,5030,5031],{"class":709},"\u002Fapi\u002Fv1\u002Fmeta\"\n",[406,5033,5035],{"className":688,"code":5034,"language":690,"meta":411,"style":411},"{\n  \"service_version\": \"4.0.0\",\n  \"api_version\": \"1.0\",\n  \"export_format\": 2,\n  \"dedupe_window_s\": 86400,\n  \"limits\": {\n    \"body_bytes\": 10485760,\n    \"import_bytes\": 33554432,\n    \"list_max\": 500,\n    \"list_max_with_payload\": 100,\n    \"processed_ids_max\": 500,\n    \"context_entries\": 32,\n    \"context_value_bytes\": 2000,\n    \"identifier_bytes\": 200,\n    \"summary_bytes\": 2000,\n    \"warnings_max\": 100,\n    \"warnings_bytes\": 65536\n  },\n  \"kinds\": [\n    {\"kind\": \"friction\", \"versions\": [1]},\n    {\"kind\": \"review\", \"versions\": [1]}\n  ],\n  \"features\": [\"q\", \"stats\", \"export.after_id\", \"export.limit\", \"import\", \"mcp\", \"redaction\"],\n  \"client\": {\"min_version\": \"4.0.0-rc.0\", \"latest_known\": \"4.0.0\"}\n}\n",[217,5036,5037,5041,5053,5065,5076,5088,5095,5107,5119,5131,5143,5154,5166,5178,5190,5201,5212,5222,5226,5233,5253,5273,5277,5320,5346],{"__ignoreMap":411},[415,5038,5039],{"class":417,"line":418},[415,5040,697],{"class":424},[415,5042,5043,5046,5048,5051],{"class":417,"line":438},[415,5044,5045],{"class":702},"  \"service_version\"",[415,5047,706],{"class":424},[415,5049,5050],{"class":709},"\"4.0.0\"",[415,5052,288],{"class":424},[415,5054,5055,5058,5060,5063],{"class":417,"line":715},[415,5056,5057],{"class":702},"  \"api_version\"",[415,5059,706],{"class":424},[415,5061,5062],{"class":709},"\"1.0\"",[415,5064,288],{"class":424},[415,5066,5067,5070,5072,5074],{"class":417,"line":728},[415,5068,5069],{"class":702},"  \"export_format\"",[415,5071,706],{"class":424},[415,5073,2520],{"class":702},[415,5075,288],{"class":424},[415,5077,5078,5081,5083,5086],{"class":417,"line":739},[415,5079,5080],{"class":702},"  \"dedupe_window_s\"",[415,5082,706],{"class":424},[415,5084,5085],{"class":702},"86400",[415,5087,288],{"class":424},[415,5089,5090,5093],{"class":417,"line":1363},[415,5091,5092],{"class":702},"  \"limits\"",[415,5094,1461],{"class":424},[415,5096,5097,5100,5102,5105],{"class":417,"line":1376},[415,5098,5099],{"class":702},"    \"body_bytes\"",[415,5101,706],{"class":424},[415,5103,5104],{"class":702},"10485760",[415,5106,288],{"class":424},[415,5108,5109,5112,5114,5117],{"class":417,"line":1389},[415,5110,5111],{"class":702},"    \"import_bytes\"",[415,5113,706],{"class":424},[415,5115,5116],{"class":702},"33554432",[415,5118,288],{"class":424},[415,5120,5121,5124,5126,5129],{"class":417,"line":1402},[415,5122,5123],{"class":702},"    \"list_max\"",[415,5125,706],{"class":424},[415,5127,5128],{"class":702},"500",[415,5130,288],{"class":424},[415,5132,5133,5136,5138,5141],{"class":417,"line":1415},[415,5134,5135],{"class":702},"    \"list_max_with_payload\"",[415,5137,706],{"class":424},[415,5139,5140],{"class":702},"100",[415,5142,288],{"class":424},[415,5144,5145,5148,5150,5152],{"class":417,"line":1455},[415,5146,5147],{"class":702},"    \"processed_ids_max\"",[415,5149,706],{"class":424},[415,5151,5128],{"class":702},[415,5153,288],{"class":424},[415,5155,5156,5159,5161,5164],{"class":417,"line":1464},[415,5157,5158],{"class":702},"    \"context_entries\"",[415,5160,706],{"class":424},[415,5162,5163],{"class":702},"32",[415,5165,288],{"class":424},[415,5167,5168,5171,5173,5176],{"class":417,"line":1477},[415,5169,5170],{"class":702},"    \"context_value_bytes\"",[415,5172,706],{"class":424},[415,5174,5175],{"class":702},"2000",[415,5177,288],{"class":424},[415,5179,5180,5183,5185,5188],{"class":417,"line":1490},[415,5181,5182],{"class":702},"    \"identifier_bytes\"",[415,5184,706],{"class":424},[415,5186,5187],{"class":702},"200",[415,5189,288],{"class":424},[415,5191,5192,5195,5197,5199],{"class":417,"line":1503},[415,5193,5194],{"class":702},"    \"summary_bytes\"",[415,5196,706],{"class":424},[415,5198,5175],{"class":702},[415,5200,288],{"class":424},[415,5202,5203,5206,5208,5210],{"class":417,"line":1514},[415,5204,5205],{"class":702},"    \"warnings_max\"",[415,5207,706],{"class":424},[415,5209,5140],{"class":702},[415,5211,288],{"class":424},[415,5213,5214,5217,5219],{"class":417,"line":1520},[415,5215,5216],{"class":702},"    \"warnings_bytes\"",[415,5218,706],{"class":424},[415,5220,5221],{"class":702},"65536\n",[415,5223,5224],{"class":417,"line":1733},[415,5225,1790],{"class":424},[415,5227,5228,5231],{"class":417,"line":1746},[415,5229,5230],{"class":702},"  \"kinds\"",[415,5232,1992],{"class":424},[415,5234,5235,5237,5239,5241,5243,5245,5247,5249,5251],{"class":417,"line":1757},[415,5236,1997],{"class":424},[415,5238,4881],{"class":702},[415,5240,706],{"class":424},[415,5242,1322],{"class":709},[415,5244,279],{"class":424},[415,5246,4891],{"class":702},[415,5248,3713],{"class":424},[415,5250,1590],{"class":702},[415,5252,4898],{"class":424},[415,5254,5255,5257,5259,5261,5263,5265,5267,5269,5271],{"class":417,"line":1763},[415,5256,1997],{"class":424},[415,5258,4881],{"class":702},[415,5260,706],{"class":424},[415,5262,4929],{"class":709},[415,5264,279],{"class":424},[415,5266,4891],{"class":702},[415,5268,3713],{"class":424},[415,5270,1590],{"class":702},[415,5272,3797],{"class":424},[415,5274,5275],{"class":417,"line":1776},[415,5276,2499],{"class":424},[415,5278,5279,5282,5284,5287,5289,5292,5294,5297,5299,5302,5304,5307,5309,5312,5314,5317],{"class":417,"line":1787},[415,5280,5281],{"class":702},"  \"features\"",[415,5283,3713],{"class":424},[415,5285,5286],{"class":709},"\"q\"",[415,5288,279],{"class":424},[415,5290,5291],{"class":709},"\"stats\"",[415,5293,279],{"class":424},[415,5295,5296],{"class":709},"\"export.after_id\"",[415,5298,279],{"class":424},[415,5300,5301],{"class":709},"\"export.limit\"",[415,5303,279],{"class":424},[415,5305,5306],{"class":709},"\"import\"",[415,5308,279],{"class":424},[415,5310,5311],{"class":709},"\"mcp\"",[415,5313,279],{"class":424},[415,5315,5316],{"class":709},"\"redaction\"",[415,5318,5319],{"class":424},"],\n",[415,5321,5322,5325,5327,5330,5332,5335,5337,5340,5342,5344],{"class":417,"line":1793},[415,5323,5324],{"class":702},"  \"client\"",[415,5326,1421],{"class":424},[415,5328,5329],{"class":702},"\"min_version\"",[415,5331,706],{"class":424},[415,5333,5334],{"class":709},"\"4.0.0-rc.0\"",[415,5336,279],{"class":424},[415,5338,5339],{"class":702},"\"latest_known\"",[415,5341,706],{"class":424},[415,5343,5050],{"class":709},[415,5345,742],{"class":424},[415,5347,5348],{"class":417,"line":1802},[415,5349,742],{"class":424},[1231,5351,324],{"id":5352},"openapi-document",[201,5354,5355,5357,5358,5361],{},[217,5356,489],{}," returns ",[205,5359,210],{"href":207,"rel":5360},[209]," as JSON, in\nbundled form with the referenced schema files inlined. No key.",[406,5363,5365],{"className":408,"code":5364,"language":410,"meta":411,"style":411},"curl -sS \"$AGENT_FEEDBACK_URL\u002Fapi\u002Fv1\u002Fopenapi.json\"\n",[217,5366,5367],{"__ignoreMap":411},[415,5368,5369,5371,5373,5375,5377],{"class":417,"line":418},[415,5370,1249],{"class":1248},[415,5372,1252],{"class":702},[415,5374,1261],{"class":709},[415,5376,1264],{"class":424},[415,5378,5379],{"class":709},"\u002Fapi\u002Fv1\u002Fopenapi.json\"\n",[1231,5381,328],{"id":5382},"mcp",[201,5384,5385,5388,5389,605,5391,5394,5395,5397,5398,5401,5402,5405,5406,347,5408,5411,5412,5414,5415,242],{},[217,5386,5387],{},"POST \u002Fmcp"," is a remote MCP server over the MCP Streamable HTTP transport,\nauthenticated like ",[217,5390,475],{},[217,5392,5393],{},"POST \u002Fmcp\u002F{project}"," is the same with\n",[217,5396,967],{}," preset for the connection. The request needs\n",[217,5399,5400],{},"Content-Type: application\u002Fjson"," (else 415) and an ",[217,5403,5404],{},"Accept"," header naming\nboth ",[217,5407,554],{},[217,5409,5410],{},"text\u002Fevent-stream"," (else 400). The answer is a\nJSON-RPC message, as ",[217,5413,554],{}," or as a server-sent event stream; a\nnotification or response from the client is 202 with no body. The body limit\nis 10551296 bytes. The tools, their arguments and how the preset scopes them\nare in ",[205,5416,374],{"href":5417},"\u002Fdocs\u002Freference\u002Foperate#mcp-and-discovery",[406,5419,5421],{"className":408,"code":5420,"language":410,"meta":411,"style":411},"curl -sS -X POST \"$AGENT_FEEDBACK_URL\u002Fmcp\" \\\n  -H \"Authorization: Bearer $AGENT_FEEDBACK_API_KEY\" \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -H 'Accept: application\u002Fjson, text\u002Fevent-stream' \\\n  --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-06-18\",\"capabilities\":{},\"clientInfo\":{\"name\":\"curl\",\"version\":\"1\"}}}'\n",[217,5422,5423,5442,5454,5462,5471],{"__ignoreMap":411},[415,5424,5425,5427,5429,5431,5433,5435,5437,5440],{"class":417,"line":418},[415,5426,1249],{"class":1248},[415,5428,1252],{"class":702},[415,5430,1255],{"class":702},[415,5432,1258],{"class":709},[415,5434,1261],{"class":709},[415,5436,1264],{"class":424},[415,5438,5439],{"class":709},"\u002Fmcp\"",[415,5441,1270],{"class":702},[415,5443,5444,5446,5448,5450,5452],{"class":417,"line":438},[415,5445,1275],{"class":702},[415,5447,1278],{"class":709},[415,5449,1281],{"class":424},[415,5451,1284],{"class":709},[415,5453,1270],{"class":702},[415,5455,5456,5458,5460],{"class":417,"line":715},[415,5457,1275],{"class":702},[415,5459,1293],{"class":709},[415,5461,1270],{"class":702},[415,5463,5464,5466,5469],{"class":417,"line":728},[415,5465,1275],{"class":702},[415,5467,5468],{"class":709}," 'Accept: application\u002Fjson, text\u002Fevent-stream'",[415,5470,1270],{"class":702},[415,5472,5473,5475],{"class":417,"line":739},[415,5474,1300],{"class":702},[415,5476,5477],{"class":709}," '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-06-18\",\"capabilities\":{},\"clientInfo\":{\"name\":\"curl\",\"version\":\"1\"}}}'\n",[406,5479,5481],{"className":688,"code":5480,"language":690,"meta":411,"style":411},"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"initialize\",\n  \"params\": {\n    \"protocolVersion\": \"2025-06-18\",\n    \"capabilities\": {},\n    \"clientInfo\": {\"name\": \"curl\", \"version\": \"1\"}\n  }\n}\n",[217,5482,5483,5487,5499,5509,5521,5528,5540,5548,5575,5579],{"__ignoreMap":411},[415,5484,5485],{"class":417,"line":418},[415,5486,697],{"class":424},[415,5488,5489,5492,5494,5497],{"class":417,"line":438},[415,5490,5491],{"class":702},"  \"jsonrpc\"",[415,5493,706],{"class":424},[415,5495,5496],{"class":709},"\"2.0\"",[415,5498,288],{"class":424},[415,5500,5501,5503,5505,5507],{"class":417,"line":715},[415,5502,2878],{"class":702},[415,5504,706],{"class":424},[415,5506,1590],{"class":702},[415,5508,288],{"class":424},[415,5510,5511,5514,5516,5519],{"class":417,"line":728},[415,5512,5513],{"class":702},"  \"method\"",[415,5515,706],{"class":424},[415,5517,5518],{"class":709},"\"initialize\"",[415,5520,288],{"class":424},[415,5522,5523,5526],{"class":417,"line":739},[415,5524,5525],{"class":702},"  \"params\"",[415,5527,1461],{"class":424},[415,5529,5530,5533,5535,5538],{"class":417,"line":1363},[415,5531,5532],{"class":702},"    \"protocolVersion\"",[415,5534,706],{"class":424},[415,5536,5537],{"class":709},"\"2025-06-18\"",[415,5539,288],{"class":424},[415,5541,5542,5545],{"class":417,"line":1376},[415,5543,5544],{"class":702},"    \"capabilities\"",[415,5546,5547],{"class":424},": {},\n",[415,5549,5550,5553,5555,5558,5560,5563,5565,5568,5570,5573],{"class":417,"line":1389},[415,5551,5552],{"class":702},"    \"clientInfo\"",[415,5554,1421],{"class":424},[415,5556,5557],{"class":702},"\"name\"",[415,5559,706],{"class":424},[415,5561,5562],{"class":709},"\"curl\"",[415,5564,279],{"class":424},[415,5566,5567],{"class":702},"\"version\"",[415,5569,706],{"class":424},[415,5571,5572],{"class":709},"\"1\"",[415,5574,742],{"class":424},[415,5576,5577],{"class":417,"line":1402},[415,5578,1517],{"class":424},[415,5580,5581],{"class":417,"line":1415},[415,5582,742],{"class":424},[406,5584,5587],{"className":5585,"code":5586,"language":4490,"meta":411},[4488],"event: message\ndata: {\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{\"capabilities\":{\"logging\":{},\"tools\":{\"listChanged\":true}},\"instructions\":\"# AgentFeedback\\n\\n…\",\"protocolVersion\":\"2025-06-18\",\"serverInfo\":{\"name\":\"agentfeedback\",\"version\":\"4.0.0\"}}}\n",[217,5588,5586],{"__ignoreMap":411},[406,5590,5592],{"className":688,"code":5591,"language":690,"meta":411,"style":411},"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools\u002Fcall\",\n  \"params\": {\n    \"name\": \"submit_feedback\",\n    \"arguments\": {\"kind\": \"friction\", \"summary\": \"make test needs port 5432 free and says nothing when it is taken\", \"category\": \"tooling\"}\n  }\n}\n",[217,5593,5594,5598,5608,5618,5629,5635,5647,5679,5683],{"__ignoreMap":411},[415,5595,5596],{"class":417,"line":418},[415,5597,697],{"class":424},[415,5599,5600,5602,5604,5606],{"class":417,"line":438},[415,5601,5491],{"class":702},[415,5603,706],{"class":424},[415,5605,5496],{"class":709},[415,5607,288],{"class":424},[415,5609,5610,5612,5614,5616],{"class":417,"line":715},[415,5611,2878],{"class":702},[415,5613,706],{"class":424},[415,5615,2520],{"class":702},[415,5617,288],{"class":424},[415,5619,5620,5622,5624,5627],{"class":417,"line":728},[415,5621,5513],{"class":702},[415,5623,706],{"class":424},[415,5625,5626],{"class":709},"\"tools\u002Fcall\"",[415,5628,288],{"class":424},[415,5630,5631,5633],{"class":417,"line":739},[415,5632,5525],{"class":702},[415,5634,1461],{"class":424},[415,5636,5637,5640,5642,5645],{"class":417,"line":1363},[415,5638,5639],{"class":702},"    \"name\"",[415,5641,706],{"class":424},[415,5643,5644],{"class":709},"\"submit_feedback\"",[415,5646,288],{"class":424},[415,5648,5649,5652,5654,5656,5658,5660,5662,5664,5666,5669,5671,5673,5675,5677],{"class":417,"line":1376},[415,5650,5651],{"class":702},"    \"arguments\"",[415,5653,1421],{"class":424},[415,5655,4881],{"class":702},[415,5657,706],{"class":424},[415,5659,1322],{"class":709},[415,5661,279],{"class":424},[415,5663,1826],{"class":702},[415,5665,706],{"class":424},[415,5667,5668],{"class":709},"\"make test needs port 5432 free and says nothing when it is taken\"",[415,5670,279],{"class":424},[415,5672,1836],{"class":702},[415,5674,706],{"class":424},[415,5676,1841],{"class":709},[415,5678,742],{"class":424},[415,5680,5681],{"class":417,"line":1389},[415,5682,1517],{"class":424},[415,5684,5685],{"class":417,"line":1402},[415,5686,742],{"class":424},[406,5688,5690],{"className":408,"code":5689,"language":410,"meta":411,"style":411},"curl -sS -X POST \"$AGENT_FEEDBACK_URL\u002Fmcp\u002Fexample\" \\\n  -H \"Authorization: Bearer $AGENT_FEEDBACK_API_KEY\" \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -H 'Accept: application\u002Fjson, text\u002Fevent-stream' \\\n  --data @tools-call.json\n",[217,5691,5692,5711,5723,5731,5739],{"__ignoreMap":411},[415,5693,5694,5696,5698,5700,5702,5704,5706,5709],{"class":417,"line":418},[415,5695,1249],{"class":1248},[415,5697,1252],{"class":702},[415,5699,1255],{"class":702},[415,5701,1258],{"class":709},[415,5703,1261],{"class":709},[415,5705,1264],{"class":424},[415,5707,5708],{"class":709},"\u002Fmcp\u002Fexample\"",[415,5710,1270],{"class":702},[415,5712,5713,5715,5717,5719,5721],{"class":417,"line":438},[415,5714,1275],{"class":702},[415,5716,1278],{"class":709},[415,5718,1281],{"class":424},[415,5720,1284],{"class":709},[415,5722,1270],{"class":702},[415,5724,5725,5727,5729],{"class":417,"line":715},[415,5726,1275],{"class":702},[415,5728,1293],{"class":709},[415,5730,1270],{"class":702},[415,5732,5733,5735,5737],{"class":417,"line":728},[415,5734,1275],{"class":702},[415,5736,5468],{"class":709},[415,5738,1270],{"class":702},[415,5740,5741,5743],{"class":417,"line":739},[415,5742,1300],{"class":702},[415,5744,5745],{"class":709}," @tools-call.json\n",[1231,5747,5748],{"id":332},"Skill",[201,5750,5751,5753,5754,706,5757,5760,5761,5764,5765,5768,5769,5773],{},[217,5752,492],{}," returns the submission guidance as Markdown with this server's\nbase URL substituted. No key. ",[217,5755,5756],{},"format",[217,5758,5759],{},"skill-md"," (default; the guidance\nruns the binary), ",[217,5762,5763],{},"agents-md",", or ",[217,5766,5767],{},"prompt"," (HTTP instructions inline: the\n",[205,5770,5772],{"href":385,"rel":5771},[209],"curl recipe"," with the server's URL).",[406,5775,5777],{"className":408,"code":5776,"language":410,"meta":411,"style":411},"curl -sS \"$AGENT_FEEDBACK_URL\u002Fskill?format=prompt\"\n",[217,5778,5779],{"__ignoreMap":411},[415,5780,5781,5783,5785,5787,5789],{"class":417,"line":418},[415,5782,1249],{"class":1248},[415,5784,1252],{"class":702},[415,5786,1261],{"class":709},[415,5788,1264],{"class":424},[415,5790,5791],{"class":709},"\u002Fskill?format=prompt\"\n",[1231,5793,5794],{"id":336},"Discovery",[201,5796,5797,5799],{},[217,5798,495],{}," says where the OpenAPI document,\nschemas, MCP endpoint and skill live. No key, no data, no secrets.",[406,5801,5803],{"className":408,"code":5802,"language":410,"meta":411,"style":411},"curl -sS \"$AGENT_FEEDBACK_URL\u002F.well-known\u002Fagentfeedback.json\"\n",[217,5804,5805],{"__ignoreMap":411},[415,5806,5807,5809,5811,5813,5815],{"class":417,"line":418},[415,5808,1249],{"class":1248},[415,5810,1252],{"class":702},[415,5812,1261],{"class":709},[415,5814,1264],{"class":424},[415,5816,5817],{"class":709},"\u002F.well-known\u002Fagentfeedback.json\"\n",[406,5819,5821],{"className":688,"code":5820,"language":690,"meta":411,"style":411},"{\n  \"service\": \"agentfeedback\",\n  \"version\": \"4.0.0\",\n  \"api_version\": \"1.0\",\n  \"openapi\": \"\u002Fapi\u002Fv1\u002Fopenapi.json\",\n  \"schemas\": \"\u002Fapi\u002Fv1\u002Fschemas\",\n  \"mcp\": \"\u002Fmcp\",\n  \"skill\": \"\u002Fskill\",\n  \"auth\": {\"modes\": [\"bearer\", \"x-api-key\"]},\n  \"docs\": \"https:\u002F\u002Fagentfeedback.dev\u002Fdocs\"\n}\n",[217,5822,5823,5827,5839,5850,5860,5872,5883,5895,5907,5929,5939],{"__ignoreMap":411},[415,5824,5825],{"class":417,"line":418},[415,5826,697],{"class":424},[415,5828,5829,5832,5834,5837],{"class":417,"line":438},[415,5830,5831],{"class":702},"  \"service\"",[415,5833,706],{"class":424},[415,5835,5836],{"class":709},"\"agentfeedback\"",[415,5838,288],{"class":424},[415,5840,5841,5844,5846,5848],{"class":417,"line":715},[415,5842,5843],{"class":702},"  \"version\"",[415,5845,706],{"class":424},[415,5847,5050],{"class":709},[415,5849,288],{"class":424},[415,5851,5852,5854,5856,5858],{"class":417,"line":728},[415,5853,5057],{"class":702},[415,5855,706],{"class":424},[415,5857,5062],{"class":709},[415,5859,288],{"class":424},[415,5861,5862,5865,5867,5870],{"class":417,"line":739},[415,5863,5864],{"class":702},"  \"openapi\"",[415,5866,706],{"class":424},[415,5868,5869],{"class":709},"\"\u002Fapi\u002Fv1\u002Fopenapi.json\"",[415,5871,288],{"class":424},[415,5873,5874,5876,5878,5881],{"class":417,"line":1363},[415,5875,4872],{"class":702},[415,5877,706],{"class":424},[415,5879,5880],{"class":709},"\"\u002Fapi\u002Fv1\u002Fschemas\"",[415,5882,288],{"class":424},[415,5884,5885,5888,5890,5893],{"class":417,"line":1376},[415,5886,5887],{"class":702},"  \"mcp\"",[415,5889,706],{"class":424},[415,5891,5892],{"class":709},"\"\u002Fmcp\"",[415,5894,288],{"class":424},[415,5896,5897,5900,5902,5905],{"class":417,"line":1389},[415,5898,5899],{"class":702},"  \"skill\"",[415,5901,706],{"class":424},[415,5903,5904],{"class":709},"\"\u002Fskill\"",[415,5906,288],{"class":424},[415,5908,5909,5912,5914,5917,5919,5922,5924,5927],{"class":417,"line":1402},[415,5910,5911],{"class":702},"  \"auth\"",[415,5913,1421],{"class":424},[415,5915,5916],{"class":702},"\"modes\"",[415,5918,3713],{"class":424},[415,5920,5921],{"class":709},"\"bearer\"",[415,5923,279],{"class":424},[415,5925,5926],{"class":709},"\"x-api-key\"",[415,5928,4898],{"class":424},[415,5930,5931,5934,5936],{"class":417,"line":1415},[415,5932,5933],{"class":702},"  \"docs\"",[415,5935,706],{"class":424},[415,5937,5938],{"class":709},"\"https:\u002F\u002Fagentfeedback.dev\u002Fdocs\"\n",[415,5940,5941],{"class":417,"line":1455},[415,5942,742],{"class":424},[1231,5944,5946],{"id":5945},"health-ready-metrics","Health, ready, metrics",[201,5948,5949],{},"No key; keep them inside the deployment boundary.",[406,5951,5953],{"className":408,"code":5952,"language":410,"meta":411,"style":411},"curl -sS \"$AGENT_FEEDBACK_URL\u002Fhealth\"    # 200 OK: the process is alive\n",[217,5954,5955],{"__ignoreMap":411},[415,5956,5957,5959,5961,5963,5965,5968],{"class":417,"line":418},[415,5958,1249],{"class":1248},[415,5960,1252],{"class":702},[415,5962,1261],{"class":709},[415,5964,1264],{"class":424},[415,5966,5967],{"class":709},"\u002Fhealth\"",[415,5969,5970],{"class":434},"    # 200 OK: the process is alive\n",[406,5972,5974],{"className":408,"code":5973,"language":410,"meta":411,"style":411},"curl -sS \"$AGENT_FEEDBACK_URL\u002Fready\"     # 200 READY; 503 unavailable while not ready\n",[217,5975,5976],{"__ignoreMap":411},[415,5977,5978,5980,5982,5984,5986,5989],{"class":417,"line":418},[415,5979,1249],{"class":1248},[415,5981,1252],{"class":702},[415,5983,1261],{"class":709},[415,5985,1264],{"class":424},[415,5987,5988],{"class":709},"\u002Fready\"",[415,5990,5991],{"class":434},"     # 200 READY; 503 unavailable while not ready\n",[406,5993,5995],{"className":408,"code":5994,"language":410,"meta":411,"style":411},"curl -sS \"$AGENT_FEEDBACK_URL\u002Fmetrics\"   # Prometheus text exposition format\n",[217,5996,5997],{"__ignoreMap":411},[415,5998,5999,6001,6003,6005,6007,6010],{"class":417,"line":418},[415,6000,1249],{"class":1248},[415,6002,1252],{"class":702},[415,6004,1261],{"class":709},[415,6006,1264],{"class":424},[415,6008,6009],{"class":709},"\u002Fmetrics\"",[415,6011,6012],{"class":434},"   # Prometheus text exposition format\n",[201,6014,6015,6016,242],{},"Metric labels are the route pattern, an allow-listed method and the status\ncode, never a raw path or client input. What to alert on is in\n",[205,6017,374],{"href":6018},"\u002Fdocs\u002Freference\u002Foperate#monitoring",[357,6020,346],{"id":6021},"evolution-policy",[201,6023,6024,6025,6028,6029,6034,6035,6037],{},"Applies to this contract: ",[205,6026,210],{"href":207,"rel":6027},[209],", the schemas under\n",[205,6030,6032],{"href":214,"rel":6031},[209],[217,6033,219],{}," and the conformance kit under\n",[217,6036,223],{},". Producers and consumers can rely\non it.",[457,6039,6040,6067,6077,6094,6111],{},[250,6041,6042,6043,6045,6046,6048,6049,551,6051,6054,6055,6057,6058,279,6060,973,6063,6066],{},"Additive changes never bump a kind's ",[217,6044,950],{},": a new optional\npayload member, a new ",[217,6047,972],{}," key, a new documented value of an existing\nmember. ",[217,6050,987],{},[217,6052,6053],{},"evidence[]"," and the ",[217,6056,972],{}," keys ",[217,6059,2595],{},[217,6061,6062],{},"detector",[217,6064,6065],{},"session_harness"," were added this way to version 1.",[250,6068,6069,6070,6072,6073,6076],{},"A ",[217,6071,950],{}," bump means a member changed meaning or shape. The new\nversion is a new schema file beside the old one; a server that does not\nship a version stores its payload unvalidated with an\n",[217,6074,6075],{},"unknown_schema_version"," warning.",[250,6078,6079,6080,6083,6084,6087,6088,6090,6091,6093],{},"Unknown fields are stored, never rejected: an unknown payload member of a\nkind the server ships a schema for is kept with an ",[217,6081,6082],{},"unknown_field"," warning\n(a kind without one is stored unvalidated with ",[217,6085,6086],{},"no_schema","), an unknown\ntop-level member is moved into ",[217,6089,976],{},", an unknown ",[217,6092,972],{}," key is kept\nas sent.",[250,6095,6096,6098,6099,605,6101,6103,6104,6106,6107,6110],{},[217,6097,972],{}," stays a flat map of strings (32 entries, values up to 2000\nbytes) about how and where a submission came to be. Structured content\ngoes in ",[217,6100,976],{},[217,6102,972],{}," is not part of ",[217,6105,1005],{},", so a new key\nleaves a submission's identity unchanged while the context stays within 32\nentries; entries beyond the first 32 move into ",[217,6108,6109],{},"payload.context_overflow",",\nwhich is part of identity.",[250,6112,6113,6114,6116,6117,706,6119,288,6122,279,6125,279,6128,279,6131,6133],{},"A documented vocabulary in a ",[217,6115,972],{}," value (",[217,6118,2595],{},[217,6120,6121],{},"agent",[217,6123,6124],{},"hook-nudge",[217,6126,6127],{},"session-scan",[217,6129,6130],{},"inbox",[217,6132,312],{},") is not enforced: another\nvalue is stored as sent, without a warning.",[357,6135,6137],{"id":6136},"version-axes","Version axes",[201,6139,6140],{},"The values of this contract, release 4.0.0 and later. Each axis moves on its\nown; none implies another.",[758,6142,6143,6159],{},[761,6144,6145],{},[764,6146,6147,6150,6153,6156],{},[767,6148,6149],{},"Axis",[767,6151,6152],{},"Current",[767,6154,6155],{},"Where it is read",[767,6157,6158],{},"Changes when",[774,6160,6161,6185,6205,6237,6256,6285],{},[764,6162,6163,6165,6169,6182],{},[779,6164,162],{},[779,6166,6167],{},[217,6168,236],{},[779,6170,6171,535,6174,977,6177,535,6180],{},[217,6172,6173],{},"info.version",[205,6175,210],{"href":207,"rel":6176},[209],[217,6178,6179],{},"api_version",[217,6181,902],{},[779,6183,6184],{},"a route, parameter or response member is added (minor) or changed (major)",[764,6186,6187,6190,6193,6202],{},[779,6188,6189],{},"Envelope",[779,6191,6192],{},"v1",[779,6194,6195,6198,6199],{},[217,6196,6197],{},"$id"," of ",[217,6200,6201],{},"schemas\u002Fenvelope.v1.json",[779,6203,6204],{},"the envelope's members change meaning; additions stay v1",[764,6206,6207,6210,6222,6232],{},[779,6208,6209],{},"Kind payload",[779,6211,6212,6214,6215,6217,6218,347,6220],{},[217,6213,950],{}," per kind, ",[217,6216,1590],{}," for ",[217,6219,987],{},[217,6221,994],{},[779,6223,6224,6225,977,6227,535,6230],{},"the submission's ",[217,6226,950],{},[217,6228,6229],{},"kinds",[217,6231,902],{},[779,6233,6234,6235,1149],{},"a payload member changes meaning or shape (see ",[205,6236,346],{"href":345},[764,6238,6239,6242,6246,6253],{},[779,6240,6241],{},"Export format",[779,6243,6244],{},[217,6245,2520],{},[779,6247,6248,6250,6251],{},[217,6249,4503],{}," in the export header line and in ",[217,6252,902],{},[779,6254,6255],{},"the NDJSON export lines change shape",[764,6257,6258,6261,6267,6277],{},[779,6259,6260],{},"Binary",[779,6262,6263,6264],{},"the release version, e.g. ",[217,6265,6266],{},"4.0.0",[779,6268,6269,977,6272,535,6275],{},[217,6270,6271],{},"agentfeedback version",[217,6273,6274],{},"service_version",[217,6276,902],{},[779,6278,6279,6280,535,6282,6284],{},"every release; ",[217,6281,4996],{},[217,6283,902],{}," rises only when a server change breaks older clients",[764,6286,6287,6290,6299,6302],{},[779,6288,6289],{},"Skills",[779,6291,6292,6295,6296],{},[217,6293,6294],{},"metadata.version"," in each ",[217,6297,6298],{},"SKILL.md",[779,6300,6301],{},"the skill's front matter",[779,6303,6304],{},"the commands or rules a skill teaches change",[357,6306,241],{"id":6307},"changes",[201,6309,6310],{},"None since API 1.0.",[6312,6313,6314],"style",{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":411,"searchDepth":438,"depth":438,"links":6316},[6317,6318,6319,6320,6321,6339,6340,6341],{"id":359,"depth":438,"text":255},{"id":404,"depth":438,"text":261},{"id":745,"depth":438,"text":746},{"id":935,"depth":438,"text":267},{"id":1228,"depth":438,"text":1229,"children":6322},[6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338],{"id":278,"depth":715,"text":1233},{"id":283,"depth":715,"text":2347},{"id":287,"depth":715,"text":2819},{"id":3135,"depth":715,"text":3136},{"id":3633,"depth":715,"text":3634},{"id":300,"depth":715,"text":3813},{"id":304,"depth":715,"text":4026},{"id":308,"depth":715,"text":4399},{"id":312,"depth":715,"text":4579},{"id":316,"depth":715,"text":4831},{"id":320,"depth":715,"text":4988},{"id":5352,"depth":715,"text":324},{"id":5382,"depth":715,"text":328},{"id":332,"depth":715,"text":5748},{"id":336,"depth":715,"text":5794},{"id":5945,"depth":715,"text":5946},{"id":6021,"depth":438,"text":346},{"id":6136,"depth":438,"text":6137},{"id":6307,"depth":438,"text":241},"The HTTP API of an AgentFeedback server: write-once submissions from AI agents, their processing marks, aggregates, export and import, schemas, remote MCP and…","md",{},{"title":162,"icon":165},{"title":196,"description":6342},null,"dVXpfObcIaON8QIe3r-_LPhAI_E0m1_btDDeVJjJ2K4",[6350,6352],{"title":155,"path":156,"stem":157,"description":6351,"icon":160,"children":-1},"The open-source project's own documents, vendored at the pinned release.",{"title":167,"path":168,"stem":169,"description":6353,"icon":170,"children":-1},"Run AgentFeedback on one machine with no server, or run a server for several machines; wire the harnesses, back up, upgrade and migrate.",1794388868360]