[{"data":1,"prerenderedAt":6069},["ShallowReactive",2],{"-docs-reference-agent-cli-json":3,"-docs-reference-agent-cli-json-surround":6064},{"id":4,"title":5,"body":6,"description":6054,"extension":6055,"links":6056,"meta":6057,"navigation":6058,"path":6060,"seo":6061,"stem":6062,"__hash__":6063},"docs\u002Fdocs\u002F4.reference\u002F5.agent-cli-json.md","Agent CLI contracts",{"type":7,"value":8,"toc":6015},"minimark",[9,17,22,25,95,103,135,153,159,174,178,189,206,210,220,226,556,568,588,594,621,625,660,694,703,710,830,866,952,959,962,1265,1270,1276,1286,1309,1317,1324,1380,1400,1418,1421,1427,1690,1732,1737,2086,2127,2130,2336,2348,2380,2444,2491,2496,2530,2578,2583,3053,3076,3085,3093,3207,3232,3243,3366,3396,3404,3541,3565,3573,3667,3687,3696,3701,3833,3847,3854,3893,3932,3937,4565,4599,4639,4682,4722,4726,4740,4771,4911,5101,5142,5158,5183,5187,5492,5495,5505,5509,5595,5598,5602,5613,5796,5810,5817,5849,5856,5870,5874,5896,5899,5957,5973,5977,6011],[10,11,12,16],"p",{},[13,14,15],"code",{},"thespider-agent"," exposes findings and campaign completion to agents, shell scripts, and CI without\nthe web UI. This page is the machine contract: what is stable, how it changes, and what every field\nand exit code means.",[18,19,21],"h2",{"id":20},"what-is-stable","What is stable",[10,23,24],{},"Three contracts ship together and are versioned independently:",[26,27,28,44],"table",{},[29,30,31],"thead",{},[32,33,34,38,41],"tr",{},[35,36,37],"th",{},"Contract",[35,39,40],{},"Version marker",[35,42,43],{},"Where",[45,46,47,65,82],"tbody",{},[32,48,49,53,58],{},[50,51,52],"td",{},"JSON envelope",[50,54,55],{},[13,56,57],{},"schemaVersion: 1",[50,59,60,61,64],{},"every ",[13,62,63],{},"--json"," document",[32,66,67,70,73],{},[50,68,69],{},"Exit codes",[50,71,72],{},"this page",[50,74,75,78,79],{},[13,76,77],{},"findings *"," and ",[13,80,81],{},"wait",[32,83,84,87,92],{},[50,85,86],{},"Markdown packet",[50,88,89],{},[13,90,91],{},"thespider_packet: 1",[50,93,94],{},"the first line of the packet front matter",[96,97,99,102],"h3",{"id":98},"schemaversion-policy",[13,100,101],{},"schemaVersion"," policy",[104,105,106],"blockquote",{},[10,107,108,109,111,112,116,117,120,121,124,125,128,129,131,132,134],{},"Within a ",[13,110,101],{},", fields may only be ",[113,114,115],"strong",{},"added",". No field is removed, renamed, or changes\ntype. A value that is known to be absent is ",[13,118,119],{},"null","; keys are ",[113,122,123],{},"never omitted",". Array fields are\n",[13,126,127],{},"[]",", never ",[13,130,119],{},". Any other change bumps ",[13,133,101],{},".",[10,136,137,138,141,142,146,147,152],{},"The envelope is ",[113,139,140],{},"CLI-owned",": record fields are an explicit allow-list built by the agent, not a\npassthrough of the server body, so an ordinary server addition can never become an accidental\nbreaking change for a skill. Field ",[143,144,145],"em",{},"names"," deliberately match the server and\n",[148,149,151],"a",{"href":150},"\u002Fdocs\u002Freference\u002Ffindings-export","findings export"," vocabulary verbatim (snake_case) — there is no\nrenaming layer to drift.",[96,154,156,102],{"id":155},"thespider_packet-policy",[13,157,158],{},"thespider_packet",[104,160,161],{},[10,162,163,164,166,167,170,171,173],{},"Within ",[13,165,91],{},", headings may only be ",[113,168,169],{},"appended"," after the last one. Renaming,\nreordering, removing, or changing the nesting level of any heading requires bumping\n",[13,172,158],{},". Prose inside a section may change freely; the heading set and its order may not.",[18,175,177],{"id":176},"stdout-purity","stdout purity",[104,179,180],{},[10,181,182,183,185,186,188],{},"With ",[13,184,63],{},", stdout carries exactly one JSON document terminated by a single newline, and\nnothing else. All human text, progress ticks, warnings, and errors go to stderr. A non-zero exit\nstill emits one JSON document on stdout. Without ",[13,187,63],{},", stdout carries only the command's\nprimary output (the human table, or the markdown packet); diagnostics still go to stderr.",[10,190,191,193,194,197,198,201,202,205],{},[13,192,81],{},"'s per-poll progress line goes to stderr in ",[113,195,196],{},"both"," modes, as does ",[13,199,200],{},"findings copy","'s \"copied\"\nnotice. ",[13,203,204],{},"clipboard","'s OSC 52 escape sequence is also written to stderr, so a consumer parsing stderr\nshould expect it.",[18,207,209],{"id":208},"commands","Commands",[211,212,217],"pre",{"className":213,"code":215,"language":216},[214],"language-text","thespider-agent [--auth \u003CPATH>] \u003CCOMMAND>\n\n  findings                       # alias: finding\n    list      [flags]\n    show      \u003CID> [flags]\n    triage    \u003CID> --status \u003CSTATUS> [flags]     # alias: set-status\n    packet    \u003CID> [flags]\n    copy      \u003CID> [flags]\n\n  wait --campaign \u003CID> [flags]\n","text",[13,218,215],{"__ignoreMap":219},"",[96,221,223],{"id":222},"findings-list",[13,224,225],{},"findings list",[26,227,228,244],{},[29,229,230],{},[32,231,232,235,238,241],{},[35,233,234],{},"Flag",[35,236,237],{},"Type",[35,239,240],{},"Default",[35,242,243],{},"Notes",[45,245,246,263,289,320,346,367,382,395,408,421,438,465,489,514,530],{},[32,247,248,252,255,260],{},[50,249,250],{},[13,251,63],{},[50,253,254],{},"bool",[50,256,257],{},[13,258,259],{},"false",[50,261,262],{},"Emit the envelope; the stdout purity rule applies",[32,264,265,270,273,276],{},[50,266,267],{},[13,268,269],{},"--status \u003CCSV>",[50,271,272],{},"string",[50,274,275],{},"none",[50,277,278,279,282,283,282,286],{},"The eight statuses plus ",[13,280,281],{},"open",", ",[13,284,285],{},"closed",[13,287,288],{},"actionable",[32,290,291,296,298,300],{},[50,292,293],{},[13,294,295],{},"--severity \u003CCSV>",[50,297,272],{},[50,299,275],{},[50,301,302,282,305,282,308,282,311,282,314,317,318],{},[13,303,304],{},"critical",[13,306,307],{},"high",[13,309,310],{},"medium",[13,312,313],{},"low",[13,315,316],{},"info",", plus reserved ",[13,319,275],{},[32,321,322,327,329,333],{},[50,323,324],{},[13,325,326],{},"--open",[50,328,254],{},[50,330,331],{},[13,332,259],{},[50,334,335,336,339,340,78,343],{},"Sugar for ",[13,337,338],{},"--status open","; conflicts with ",[13,341,342],{},"--status",[13,344,345],{},"--actionable",[32,347,348,352,354,358],{},[50,349,350],{},[13,351,345],{},[50,353,254],{},[50,355,356],{},[13,357,259],{},[50,359,335,360,339,363,78,365],{},[13,361,362],{},"--status actionable",[13,364,342],{},[13,366,326],{},[32,368,369,374,377,379],{},[50,370,371],{},[13,372,373],{},"--campaign \u003CID>",[50,375,376],{},"integer",[50,378,275],{},[50,380,381],{},"Findings sighted in this campaign; also selects the campaign's profile",[32,383,384,389,391,393],{},[50,385,386],{},[13,387,388],{},"--branch \u003CNAME>",[50,390,272],{},[50,392,275],{},[50,394],{},[32,396,397,402,404,406],{},[50,398,399],{},[13,400,401],{},"--bucket \u003CCODE>",[50,403,272],{},[50,405,275],{},[50,407],{},[32,409,410,415,417,419],{},[50,411,412],{},[13,413,414],{},"--category \u003CCODE>",[50,416,272],{},[50,418,275],{},[50,420],{},[32,422,423,432,434,436],{},[50,424,425,428,429],{},[13,426,427],{},"--query \u003CTEXT>"," \u002F ",[13,430,431],{},"-q",[50,433,272],{},[50,435,275],{},[50,437],{},[32,439,440,445,447,452],{},[50,441,442],{},[13,443,444],{},"--sort \u003CMODE>",[50,446,272],{},[50,448,449],{},[13,450,451],{},"priority",[50,453,454,282,456,282,459,282,462],{},[13,455,451],{},[13,457,458],{},"updated_desc",[13,460,461],{},"updated_asc",[13,463,464],{},"title",[32,466,467,472,474,477],{},[50,468,469],{},[13,470,471],{},"--profile \u003CP>",[50,473,272],{},[50,475,476],{},"project default",[50,478,479,282,482,485,486],{},[13,480,481],{},"security",[13,483,484],{},"bugs",", or ",[13,487,488],{},"all",[32,490,491,496,498,503],{},[50,492,493],{},[13,494,495],{},"--limit \u003CN>",[50,497,376],{},[50,499,500],{},[13,501,502],{},"100",[50,504,505,506,509,510,513],{},"Above ",[13,507,508],{},"500"," is a ",[113,511,512],{},"usage error",", never a silent clamp",[32,515,516,521,523,528],{},[50,517,518],{},[13,519,520],{},"--offset \u003CN>",[50,522,376],{},[50,524,525],{},[13,526,527],{},"0",[50,529],{},[32,531,532,537,539,543],{},[50,533,534],{},[13,535,536],{},"--all",[50,538,254],{},[50,540,541],{},[13,542,259],{},[50,544,545,546,339,549,552,553],{},"Complete filtered set via ",[13,547,548],{},"\u002Ffindings\u002Fexport",[13,550,551],{},"--limit","\u002F",[13,554,555],{},"--offset",[96,557,559,428,562,428,565],{"id":558},"findings-show-packet-copy",[13,560,561],{},"findings show",[13,563,564],{},"packet",[13,566,567],{},"copy",[10,569,570,573,574,282,576,579,580,78,582,584,585,134],{},[13,571,572],{},"\u003CID>"," positional, ",[13,575,63],{},[13,577,578],{},"--profile",". ",[13,581,564],{},[13,583,567],{}," additionally take ",[13,586,587],{},"--redact",[96,589,591],{"id":590},"findings-triage",[13,592,593],{},"findings triage",[10,595,596,598,599,602,603,282,606,282,609,612,613,282,616,282,618,620],{},[13,597,572],{}," positional and ",[13,600,601],{},"--status \u003CSTATUS>"," (required), plus ",[13,604,605],{},"--reason",[13,607,608],{},"--note",[13,610,611],{},"--commit","\n(repeatable), ",[13,614,615],{},"--decider",[13,617,63],{},[13,619,578],{},". Exactly one finding per invocation — callers loop.",[96,622,623],{"id":81},[13,624,81],{},[10,626,627,629,630,633,634,637,638,640,641,633,644,647,648,651,652,655,656,282,658,134],{},[13,628,373],{}," (required), ",[13,631,632],{},"--timeout \u003CSECS>"," (default ",[13,635,636],{},"1800","; ",[13,639,527],{}," means no timeout),\n",[13,642,643],{},"--interval \u003CSECS>",[13,645,646],{},"15","; the real delay adds 0–20 % jitter), ",[13,649,650],{},"--fail-on \u003CCSV>"," (default\n",[13,653,654],{},"critical,high","), ",[13,657,578],{},[13,659,63],{},[661,662,663,78,666,669,670,672,673,676,677,680,681,684,685,687,688,690,691,134],"note",{},[13,664,665],{},"--fail-on none",[13,667,668],{},"--fail-on off"," are different. ",[13,671,275],{}," is the reserved ",[113,674,675],{},"severity"," token\nmeaning \"no severity was assigned\", so ",[13,678,679],{},"--fail-on critical,high,none"," blocks on unclassified\nfindings too. ",[13,682,683],{},"off"," — legal only as the entire value — disables the findings verdict, after which\n",[13,686,81],{}," can only exit ",[13,689,527],{}," or ",[13,692,693],{},"4",[18,695,697,698,700,701],{"id":696},"status-predicates-open-vs-actionable","Status predicates: ",[13,699,281],{}," vs ",[13,702,288],{},[10,704,705,706,709],{},"Each token is resolved server-side as a ",[143,707,708],{},"complement"," — \"every status except these\" — not as a fixed\nlist, so a status outside the standard vocabulary (a legacy workspace import can carry one) still\nlands on the correct side of every token.",[26,711,712,728],{},[29,713,714],{},[32,715,716,719,722,725],{},[35,717,718],{},"Token",[35,720,721],{},"Question it answers",[35,723,724],{},"Definition",[35,726,727],{},"Used by",[45,729,730,774,806],{},[32,731,732,736,741,756],{},[50,733,734],{},[13,735,281],{},[50,737,738],{},[143,739,740],{},"\"What is not yet resolved?\"",[50,742,743,744,747,748,751,752,755],{},"every status ",[113,745,746],{},"except"," ",[13,749,750],{},"fixed, false_positive"," (of the eight: ",[13,753,754],{},"new, triaged, accepted, wont_fix, needs_retest, still_vulnerable",")",[50,757,758,428,761,763,764,767,768,747,771],{},[13,759,760],{},"findings list --status open",[13,762,326],{},"; matches ",[13,765,766],{},"summary.open",", the web dashboard, and ",[13,769,770],{},"campaign.open_findings",[113,772,773],{},"by construction",[32,775,776,780,785,795],{},[50,777,778],{},[13,779,288],{},[50,781,782],{},[143,783,784],{},"\"What still needs a human decision?\"",[50,786,743,787,747,789,751,792,755],{},[113,788,746],{},[13,790,791],{},"wont_fix, false_positive, accepted, fixed",[13,793,794],{},"new, triaged, needs_retest, still_vulnerable",[50,796,797,799,800,428,803,805],{},[13,798,81],{},"'s exit-0\u002F1 verdict; ",[13,801,802],{},"findings list --status actionable",[13,804,345],{},"; the exact complement of the set the PR gate suppresses",[32,807,808,812,817,822],{},[50,809,810],{},[13,811,285],{},[50,813,814],{},[143,815,816],{},"\"What is resolved?\"",[50,818,819,820],{},"exactly ",[13,821,750],{},[50,823,824,827,828],{},[13,825,826],{},"findings list --status closed","; the exact complement of ",[13,829,281],{},[831,832,833,854],"warning",{},[10,834,835,843,844,747,847,78,850,853],{},[113,836,837,839,840,842],{},[13,838,81],{}," can report clean while ",[13,841,760],{}," returns rows. That is correct.","\nIt means: ",[143,845,846],{},"nothing actionable; N accepted risks remain open.",[13,848,849],{},"accepted",[13,851,852],{},"wont_fix"," are\ndeliberate risk decisions — they keep a finding open (it is still counted on the dashboard) but\nremove it from the actionable set, which is what lets an agent loop converge after a triage\ndecision instead of failing forever.",[10,855,856,857],{},"Rule of thumb: ",[113,858,859,860,862,863,865],{},"use ",[13,861,288],{}," to decide whether to do work; use ",[13,864,281],{}," to report state.",[211,867,871],{"className":868,"code":869,"language":870,"meta":219,"style":219},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","thespider-agent findings list --actionable --severity critical,high --json | jq '.pagination.total'  # work queue\nthespider-agent findings list --open       --severity critical,high --json | jq '.pagination.total'  # dashboard number\n","bash",[13,872,873,920],{"__ignoreMap":219},[874,875,878,881,885,888,891,894,897,900,904,907,910,913,916],"span",{"class":876,"line":877},"line",1,[874,879,15],{"class":880},"sBMFI",[874,882,884],{"class":883},"sfazB"," findings",[874,886,887],{"class":883}," list",[874,889,890],{"class":883}," --actionable",[874,892,893],{"class":883}," --severity",[874,895,896],{"class":883}," critical,high",[874,898,899],{"class":883}," --json",[874,901,903],{"class":902},"sMK4o"," |",[874,905,906],{"class":880}," jq",[874,908,909],{"class":902}," '",[874,911,912],{"class":883},".pagination.total",[874,914,915],{"class":902},"'",[874,917,919],{"class":918},"sHwdD","  # work queue\n",[874,921,923,925,927,929,932,935,937,939,941,943,945,947,949],{"class":876,"line":922},2,[874,924,15],{"class":880},[874,926,884],{"class":883},[874,928,887],{"class":883},[874,930,931],{"class":883}," --open",[874,933,934],{"class":883},"       --severity",[874,936,896],{"class":883},[874,938,899],{"class":883},[874,940,903],{"class":902},[874,942,906],{"class":880},[874,944,909],{"class":902},[874,946,912],{"class":883},[874,948,915],{"class":902},[874,950,951],{"class":918},"  # dashboard number\n",[10,953,954,955,958],{},"Alias membership is defined ",[113,956,957],{},"server-side in exactly one place"," and the CLI forwards the token\nverbatim, so the two can never drift.",[18,960,69],{"id":961},"exit-codes",[26,963,964,994],{},[29,965,966],{},[32,967,968,971,974,978,983,987,991],{},[35,969,970],{},"Code",[35,972,973],{},"Name",[35,975,976],{},[13,977,81],{},[35,979,980],{},[13,981,982],{},"findings list\u002Fshow\u002Fpacket",[35,984,985],{},[13,986,200],{},[35,988,989],{},[13,990,593],{},[35,992,993],{},"Meaning",[45,995,996,1032,1067,1104,1130,1159,1185,1216,1239],{},[32,997,998,1002,1007,1010,1012,1014,1016],{},[50,999,1000],{},[13,1001,527],{},[50,1003,1004],{},[13,1005,1006],{},"OK",[50,1008,1009],{},"✔",[50,1011,1009],{},[50,1013,1009],{},[50,1015,1009],{},[50,1017,1018,1019,1021,1022,1025,1026,1028,1029,134],{},"Success. For ",[13,1020,81],{},": campaign terminal, ",[13,1023,1024],{},"failed == 0",", no ",[113,1027,288],{}," finding matches ",[13,1030,1031],{},"--fail-on",[32,1033,1034,1039,1044,1046,1049,1051,1053],{},[50,1035,1036],{},[13,1037,1038],{},"1",[50,1040,1041],{},[13,1042,1043],{},"FINDINGS",[50,1045,1009],{},[50,1047,1048],{},"—",[50,1050,1048],{},[50,1052,1048],{},[50,1054,1055,1058,1059,747,1061,1064,1065,134],{},[113,1056,1057],{},"Findings verdict only."," Campaign terminal and at least one finding sighted in it is ",[113,1060,288],{},[143,1062,1063],{},"and"," matches ",[13,1066,1031],{},[32,1068,1069,1074,1079,1081,1083,1085,1087],{},[50,1070,1071],{},[13,1072,1073],{},"2",[50,1075,1076],{},[143,1077,1078],{},"(reserved — never produced)",[50,1080,1048],{},[50,1082,1048],{},[50,1084,1048],{},[50,1086,1048],{},[50,1088,1089,1090,428,1093,579,1096,1099,1100,134],{},"Emitted only by clap's own argument parser and by the legacy ",[13,1091,1092],{},"gate",[13,1094,1095],{},"update --check",[113,1097,1098],{},"The one exit code that never writes a JSON document"," — see ",[148,1101,1103],{"href":1102},"#error-envelope","the error envelope",[32,1105,1106,1111,1116,1118,1120,1122,1124],{},[50,1107,1108],{},[13,1109,1110],{},"3",[50,1112,1113],{},[13,1114,1115],{},"TIMEOUT",[50,1117,1009],{},[50,1119,1048],{},[50,1121,1048],{},[50,1123,1048],{},[50,1125,1126,1129],{},[13,1127,1128],{},"--timeout"," elapsed before the campaign became terminal.",[32,1131,1132,1136,1141,1143,1145,1147,1149],{},[50,1133,1134],{},[13,1135,693],{},[50,1137,1138],{},[13,1139,1140],{},"DEGRADED",[50,1142,1009],{},[50,1144,1048],{},[50,1146,1048],{},[50,1148,1048],{},[50,1150,1151,1152,1155,1156,1158],{},"Campaign terminal with ",[13,1153,1154],{},"failed > 0"," and no actionable ",[13,1157,1031],{}," match. Nothing may be called clean.",[32,1160,1161,1166,1171,1173,1175,1177,1179],{},[50,1162,1163],{},[13,1164,1165],{},"5",[50,1167,1168],{},[13,1169,1170],{},"USAGE",[50,1172,1009],{},[50,1174,1009],{},[50,1176,1009],{},[50,1178,1009],{},[50,1180,1181,1182,134],{},"Caller's input is wrong: client-side validation failure, or HTTP ",[13,1183,1184],{},"400 \u002F 404 \u002F 409 \u002F 413 \u002F 422",[32,1186,1187,1192,1197,1199,1201,1203,1205],{},[50,1188,1189],{},[13,1190,1191],{},"6",[50,1193,1194],{},[13,1195,1196],{},"OPERATIONAL",[50,1198,1009],{},[50,1200,1009],{},[50,1202,1009],{},[50,1204,1009],{},[50,1206,1207,1208,1211,1212,1215],{},"Environment failure: HTTP ",[13,1209,1210],{},"401 \u002F 402 \u002F 403 \u002F 429 \u002F 5xx",", exhausted retries, unparseable response, missing ",[13,1213,1214],{},".thespider\u002Fconfig.toml",", unresolvable org or project.",[32,1217,1218,1223,1228,1230,1232,1234,1236],{},[50,1219,1220],{},[13,1221,1222],{},"7",[50,1224,1225],{},[13,1226,1227],{},"INTERRUPTED",[50,1229,1009],{},[50,1231,1048],{},[50,1233,1048],{},[50,1235,1048],{},[50,1237,1238],{},"SIGINT\u002FSIGTERM received while waiting.",[32,1240,1241,1246,1251,1253,1255,1257,1259],{},[50,1242,1243],{},[13,1244,1245],{},"8",[50,1247,1248],{},[13,1249,1250],{},"CLIPBOARD",[50,1252,1048],{},[50,1254,1048],{},[50,1256,1009],{},[50,1258,1048],{},[50,1260,1261,1262,1264],{},"Packet rendered successfully but the clipboard write failed. The packet is on stdout (human mode) or in ",[13,1263,564],{}," (JSON mode).",[10,1266,1267,1269],{},[13,1268,81],{}," evaluates its verdict in this order:",[211,1271,1274],{"className":1272,"code":1273,"language":216},[214],"interrupted        -> 7\ntimeout            -> 3\nmatches > 0        -> 1        (even when failed > 0; `degraded: true` is still set)\nfailed  > 0        -> 4\notherwise          -> 0\n",[13,1275,1273],{"__ignoreMap":219},[10,1277,1278,1279,282,1282,1285],{},"A findings verdict deliberately outranks degradation: an agent scripted on \"fix the findings first\"\nmust not skip real criticals because one slice failed. Degradation always stays visible through\n",[13,1280,1281],{},"degraded",[13,1283,1284],{},"campaign.failed",", and a stderr warning.",[831,1287,1288,1296,1297,1299,1300,1302,1303,1306,1307,134],{},[113,1289,1290,1292,1293,1295],{},[13,1291,81],{}," exit ",[13,1294,527],{}," does not mean \"no open findings\" — it means \"nothing actionable\"."," A campaign\nwhose only critical finding has been triaged ",[13,1298,849],{}," exits ",[13,1301,527],{}," while\n",[13,1304,1305],{},"findings list --open --severity critical --json"," still reports it. Scripts that want the dashboard\nnumber must ask for it explicitly with ",[13,1308,338],{},[96,1310,1312,1314,1315],{"id":1311},"wait-is-not-gate",[13,1313,81],{}," is not ",[13,1316,1092],{},[10,1318,1319,1320,1323],{},"The two commands publish ",[113,1321,1322],{},"disjoint"," exit tables and must not be mixed in one script.",[1325,1326,1327,1355,1363],"ol",{},[1328,1329,1330,747,1332,1334,1335,1338,1339,1341,1342,1344,1345,1348,1349,1351,1352,134],"li",{},[13,1331,1092],{},[13,1333,1073],{}," means ",[143,1336,1337],{},"\"ask again later; CI should retry with backoff.\""," A ",[13,1340,81],{}," returning ",[13,1343,1073],{}," would\nmean the opposite — ",[143,1346,1347],{},"\"I waited and it never terminated\""," — so ",[13,1350,81],{}," uses ",[13,1353,1354],{},"3 = TIMEOUT",[1328,1356,1357,1359,1360,1362],{},[13,1358,1092],{},"'s ",[13,1361,1073],{}," is a catch-all that also swallows unrecognized status strings, so it is not a clean\npending signal and cannot be inherited.",[1328,1364,1365,747,1367,1369,1370,747,1372,1374,1375,651,1377,1379],{},[13,1366,1092],{},[13,1368,1038],{}," is severity-blind; ",[13,1371,81],{},[13,1373,1038],{}," is severity-scoped by ",[13,1376,1031],{},[13,1378,654],{},"). Same number, different predicate.",[10,1381,1382,1383,1386,1387,1389,1390,1392,1393,1395,1396,78,1398,134],{},"There is exactly ",[113,1384,1385],{},"one"," deliberate alignment: ",[13,1388,81],{},"'s status predicate (",[13,1391,288],{},") is the exact\ncomplement of the set the PR gate suppresses, so a triage decision that quiets the gate also quiets\n",[13,1394,81],{},". They still disagree about severity scoping and about every code except ",[13,1397,527],{},[13,1399,1038],{},[10,1401,1402,1404,1405,1407,1408,1410,1411,1413,1414,1417],{},[13,1403,1073],{}," is reserved because clap exits ",[13,1406,1073],{}," on its own argument-parsing failures: if ",[13,1409,81],{}," used ",[13,1412,1073],{}," for\na timeout, then ",[13,1415,1416],{},"wait --campain 5"," (a typo) would be indistinguishable from a real one.",[18,1419,52],{"id":1420},"json-envelope",[10,1422,1423,1424,1426],{},"Every ",[13,1425,63],{}," document starts with the same envelope:",[211,1428,1432],{"className":1429,"code":1430,"language":1431,"meta":219,"style":219},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"schemaVersion\": 1,\n  \"command\": \"findings.list\",\n  \"generatedAt\": \"2026-07-28T14:03:11Z\",\n  \"agentVersion\": \"0.2.3\",\n  \"ok\": true,\n  \"exitCode\": 0,\n  \"server\": \"https:\u002F\u002Fthespider.xyz\",\n  \"project\": { \"id\": 42, \"slug\": \"payments-api\", \"selector\": \"acme\u002Fpayments-api\" },\n  \"profile\": \"security\",\n  \"profileSource\": \"project-default\"\n}\n","json",[13,1433,1434,1439,1460,1482,1503,1524,1539,1556,1577,1644,1664,1684],{"__ignoreMap":219},[874,1435,1436],{"class":876,"line":877},[874,1437,1438],{"class":902},"{\n",[874,1440,1441,1444,1447,1450,1453,1457],{"class":876,"line":922},[874,1442,1443],{"class":902},"  \"",[874,1445,101],{"class":1446},"spNyl",[874,1448,1449],{"class":902},"\"",[874,1451,1452],{"class":902},":",[874,1454,1456],{"class":1455},"sbssI"," 1",[874,1458,1459],{"class":902},",\n",[874,1461,1463,1465,1468,1470,1472,1475,1478,1480],{"class":876,"line":1462},3,[874,1464,1443],{"class":902},[874,1466,1467],{"class":1446},"command",[874,1469,1449],{"class":902},[874,1471,1452],{"class":902},[874,1473,1474],{"class":902}," \"",[874,1476,1477],{"class":883},"findings.list",[874,1479,1449],{"class":902},[874,1481,1459],{"class":902},[874,1483,1485,1487,1490,1492,1494,1496,1499,1501],{"class":876,"line":1484},4,[874,1486,1443],{"class":902},[874,1488,1489],{"class":1446},"generatedAt",[874,1491,1449],{"class":902},[874,1493,1452],{"class":902},[874,1495,1474],{"class":902},[874,1497,1498],{"class":883},"2026-07-28T14:03:11Z",[874,1500,1449],{"class":902},[874,1502,1459],{"class":902},[874,1504,1506,1508,1511,1513,1515,1517,1520,1522],{"class":876,"line":1505},5,[874,1507,1443],{"class":902},[874,1509,1510],{"class":1446},"agentVersion",[874,1512,1449],{"class":902},[874,1514,1452],{"class":902},[874,1516,1474],{"class":902},[874,1518,1519],{"class":883},"0.2.3",[874,1521,1449],{"class":902},[874,1523,1459],{"class":902},[874,1525,1527,1529,1532,1534,1536],{"class":876,"line":1526},6,[874,1528,1443],{"class":902},[874,1530,1531],{"class":1446},"ok",[874,1533,1449],{"class":902},[874,1535,1452],{"class":902},[874,1537,1538],{"class":902}," true,\n",[874,1540,1542,1544,1547,1549,1551,1554],{"class":876,"line":1541},7,[874,1543,1443],{"class":902},[874,1545,1546],{"class":1446},"exitCode",[874,1548,1449],{"class":902},[874,1550,1452],{"class":902},[874,1552,1553],{"class":1455}," 0",[874,1555,1459],{"class":902},[874,1557,1559,1561,1564,1566,1568,1570,1573,1575],{"class":876,"line":1558},8,[874,1560,1443],{"class":902},[874,1562,1563],{"class":1446},"server",[874,1565,1449],{"class":902},[874,1567,1452],{"class":902},[874,1569,1474],{"class":902},[874,1571,1572],{"class":883},"https:\u002F\u002Fthespider.xyz",[874,1574,1449],{"class":902},[874,1576,1459],{"class":902},[874,1578,1580,1582,1585,1587,1589,1592,1594,1597,1599,1601,1604,1607,1609,1612,1614,1616,1618,1621,1623,1625,1627,1630,1632,1634,1636,1639,1641],{"class":876,"line":1579},9,[874,1581,1443],{"class":902},[874,1583,1584],{"class":1446},"project",[874,1586,1449],{"class":902},[874,1588,1452],{"class":902},[874,1590,1591],{"class":902}," {",[874,1593,1474],{"class":902},[874,1595,1596],{"class":880},"id",[874,1598,1449],{"class":902},[874,1600,1452],{"class":902},[874,1602,1603],{"class":1455}," 42",[874,1605,1606],{"class":902},",",[874,1608,1474],{"class":902},[874,1610,1611],{"class":880},"slug",[874,1613,1449],{"class":902},[874,1615,1452],{"class":902},[874,1617,1474],{"class":902},[874,1619,1620],{"class":883},"payments-api",[874,1622,1449],{"class":902},[874,1624,1606],{"class":902},[874,1626,1474],{"class":902},[874,1628,1629],{"class":880},"selector",[874,1631,1449],{"class":902},[874,1633,1452],{"class":902},[874,1635,1474],{"class":902},[874,1637,1638],{"class":883},"acme\u002Fpayments-api",[874,1640,1449],{"class":902},[874,1642,1643],{"class":902}," },\n",[874,1645,1647,1649,1652,1654,1656,1658,1660,1662],{"class":876,"line":1646},10,[874,1648,1443],{"class":902},[874,1650,1651],{"class":1446},"profile",[874,1653,1449],{"class":902},[874,1655,1452],{"class":902},[874,1657,1474],{"class":902},[874,1659,481],{"class":883},[874,1661,1449],{"class":902},[874,1663,1459],{"class":902},[874,1665,1667,1669,1672,1674,1676,1678,1681],{"class":876,"line":1666},11,[874,1668,1443],{"class":902},[874,1670,1671],{"class":1446},"profileSource",[874,1673,1449],{"class":902},[874,1675,1452],{"class":902},[874,1677,1474],{"class":902},[874,1679,1680],{"class":883},"project-default",[874,1682,1683],{"class":902},"\"\n",[874,1685,1687],{"class":876,"line":1686},12,[874,1688,1689],{"class":902},"}\n",[10,1691,1692,1694,1695,282,1697,282,1700,282,1703,1459,1706,282,1709,579,1711,1713,1714,282,1717,282,1720,282,1723,1725,1726,579,1729,1731],{},[13,1693,1467],{}," is one of ",[13,1696,1477],{},[13,1698,1699],{},"findings.show",[13,1701,1702],{},"findings.triage",[13,1704,1705],{},"findings.packet",[13,1707,1708],{},"findings.copy",[13,1710,81],{},[13,1712,1671],{}," is ",[13,1715,1716],{},"flag",[13,1718,1719],{},"campaign",[13,1721,1722],{},"project-config",[13,1724,1680],{},",\nor ",[13,1727,1728],{},"fallback",[13,1730,1489],{}," is UTC RFC 3339 at second precision.",[96,1733,1735],{"id":1734},"findingslist",[13,1736,1477],{},[211,1738,1740],{"className":1429,"code":1739,"language":1431,"meta":219,"style":219},"{\n  \"filters\": { \"status\": \"open\", \"severity\": \"critical,high\", \"campaignId\": null,\n               \"branch\": null, \"bucket\": null, \"category\": null, \"q\": null, \"sort\": null },\n  \"pagination\": { \"limit\": 100, \"offset\": 0, \"returned\": 100, \"total\": 240,\n                  \"truncated\": true, \"mode\": \"page\" },\n  \"summary\": { \"total\": 240, \"open\": 180, \"severe_open\": 12, \"needs_retest\": 3 },\n  \"findings\": [ { \"id\": 501, \"…\": \"…\" } ]\n}\n",[13,1741,1742,1746,1804,1866,1933,1966,2032,2082],{"__ignoreMap":219},[874,1743,1744],{"class":876,"line":877},[874,1745,1438],{"class":902},[874,1747,1748,1750,1753,1755,1757,1759,1761,1764,1766,1768,1770,1772,1774,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794,1797,1799,1801],{"class":876,"line":922},[874,1749,1443],{"class":902},[874,1751,1752],{"class":1446},"filters",[874,1754,1449],{"class":902},[874,1756,1452],{"class":902},[874,1758,1591],{"class":902},[874,1760,1474],{"class":902},[874,1762,1763],{"class":880},"status",[874,1765,1449],{"class":902},[874,1767,1452],{"class":902},[874,1769,1474],{"class":902},[874,1771,281],{"class":883},[874,1773,1449],{"class":902},[874,1775,1606],{"class":902},[874,1777,1474],{"class":902},[874,1779,675],{"class":880},[874,1781,1449],{"class":902},[874,1783,1452],{"class":902},[874,1785,1474],{"class":902},[874,1787,654],{"class":883},[874,1789,1449],{"class":902},[874,1791,1606],{"class":902},[874,1793,1474],{"class":902},[874,1795,1796],{"class":880},"campaignId",[874,1798,1449],{"class":902},[874,1800,1452],{"class":902},[874,1802,1803],{"class":902}," null,\n",[874,1805,1806,1809,1812,1814,1816,1819,1821,1824,1826,1828,1830,1832,1835,1837,1839,1841,1843,1846,1848,1850,1852,1854,1857,1859,1861,1864],{"class":876,"line":1462},[874,1807,1808],{"class":902},"               \"",[874,1810,1811],{"class":880},"branch",[874,1813,1449],{"class":902},[874,1815,1452],{"class":902},[874,1817,1818],{"class":902}," null,",[874,1820,1474],{"class":902},[874,1822,1823],{"class":880},"bucket",[874,1825,1449],{"class":902},[874,1827,1452],{"class":902},[874,1829,1818],{"class":902},[874,1831,1474],{"class":902},[874,1833,1834],{"class":880},"category",[874,1836,1449],{"class":902},[874,1838,1452],{"class":902},[874,1840,1818],{"class":902},[874,1842,1474],{"class":902},[874,1844,1845],{"class":880},"q",[874,1847,1449],{"class":902},[874,1849,1452],{"class":902},[874,1851,1818],{"class":902},[874,1853,1474],{"class":902},[874,1855,1856],{"class":880},"sort",[874,1858,1449],{"class":902},[874,1860,1452],{"class":902},[874,1862,1863],{"class":902}," null",[874,1865,1643],{"class":902},[874,1867,1868,1870,1873,1875,1877,1879,1881,1884,1886,1888,1891,1893,1895,1898,1900,1902,1904,1906,1908,1911,1913,1915,1917,1919,1921,1924,1926,1928,1931],{"class":876,"line":1484},[874,1869,1443],{"class":902},[874,1871,1872],{"class":1446},"pagination",[874,1874,1449],{"class":902},[874,1876,1452],{"class":902},[874,1878,1591],{"class":902},[874,1880,1474],{"class":902},[874,1882,1883],{"class":880},"limit",[874,1885,1449],{"class":902},[874,1887,1452],{"class":902},[874,1889,1890],{"class":1455}," 100",[874,1892,1606],{"class":902},[874,1894,1474],{"class":902},[874,1896,1897],{"class":880},"offset",[874,1899,1449],{"class":902},[874,1901,1452],{"class":902},[874,1903,1553],{"class":1455},[874,1905,1606],{"class":902},[874,1907,1474],{"class":902},[874,1909,1910],{"class":880},"returned",[874,1912,1449],{"class":902},[874,1914,1452],{"class":902},[874,1916,1890],{"class":1455},[874,1918,1606],{"class":902},[874,1920,1474],{"class":902},[874,1922,1923],{"class":880},"total",[874,1925,1449],{"class":902},[874,1927,1452],{"class":902},[874,1929,1930],{"class":1455}," 240",[874,1932,1459],{"class":902},[874,1934,1935,1938,1941,1943,1945,1948,1950,1953,1955,1957,1959,1962,1964],{"class":876,"line":1505},[874,1936,1937],{"class":902},"                  \"",[874,1939,1940],{"class":880},"truncated",[874,1942,1449],{"class":902},[874,1944,1452],{"class":902},[874,1946,1947],{"class":902}," true,",[874,1949,1474],{"class":902},[874,1951,1952],{"class":880},"mode",[874,1954,1449],{"class":902},[874,1956,1452],{"class":902},[874,1958,1474],{"class":902},[874,1960,1961],{"class":883},"page",[874,1963,1449],{"class":902},[874,1965,1643],{"class":902},[874,1967,1968,1970,1973,1975,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2002,2004,2006,2009,2011,2013,2016,2018,2020,2023,2025,2027,2030],{"class":876,"line":1526},[874,1969,1443],{"class":902},[874,1971,1972],{"class":1446},"summary",[874,1974,1449],{"class":902},[874,1976,1452],{"class":902},[874,1978,1591],{"class":902},[874,1980,1474],{"class":902},[874,1982,1923],{"class":880},[874,1984,1449],{"class":902},[874,1986,1452],{"class":902},[874,1988,1930],{"class":1455},[874,1990,1606],{"class":902},[874,1992,1474],{"class":902},[874,1994,281],{"class":880},[874,1996,1449],{"class":902},[874,1998,1452],{"class":902},[874,2000,2001],{"class":1455}," 180",[874,2003,1606],{"class":902},[874,2005,1474],{"class":902},[874,2007,2008],{"class":880},"severe_open",[874,2010,1449],{"class":902},[874,2012,1452],{"class":902},[874,2014,2015],{"class":1455}," 12",[874,2017,1606],{"class":902},[874,2019,1474],{"class":902},[874,2021,2022],{"class":880},"needs_retest",[874,2024,1449],{"class":902},[874,2026,1452],{"class":902},[874,2028,2029],{"class":1455}," 3",[874,2031,1643],{"class":902},[874,2033,2034,2036,2039,2041,2043,2046,2048,2050,2052,2054,2056,2059,2061,2063,2066,2068,2070,2072,2074,2076,2079],{"class":876,"line":1541},[874,2035,1443],{"class":902},[874,2037,2038],{"class":1446},"findings",[874,2040,1449],{"class":902},[874,2042,1452],{"class":902},[874,2044,2045],{"class":902}," [",[874,2047,1591],{"class":902},[874,2049,1474],{"class":902},[874,2051,1596],{"class":880},[874,2053,1449],{"class":902},[874,2055,1452],{"class":902},[874,2057,2058],{"class":1455}," 501",[874,2060,1606],{"class":902},[874,2062,1474],{"class":902},[874,2064,2065],{"class":880},"…",[874,2067,1449],{"class":902},[874,2069,1452],{"class":902},[874,2071,1474],{"class":902},[874,2073,2065],{"class":883},[874,2075,1449],{"class":902},[874,2077,2078],{"class":902}," }",[874,2080,2081],{"class":902}," ]\n",[874,2083,2084],{"class":876,"line":1558},[874,2085,1689],{"class":902},[10,2087,2088,2091,2092,2095,2096,428,2099,2102,2103,1713,2105,2108,2109,2111,2112,1713,2115,282,2117,1713,2119,2122,2123,1713,2125,134],{},[13,2089,2090],{},"filters.status"," echoes the ",[113,2093,2094],{},"expanded token"," (",[13,2097,2098],{},"\"open\"",[13,2100,2101],{},"\"actionable\"","), never the flag name.\n",[13,2104,1940],{},[13,2106,2107],{},"offset + returned \u003C total"," — the CLI never silently paginates. In ",[13,2110,536],{}," mode\n",[13,2113,2114],{},"pagination.limit",[13,2116,119],{},[13,2118,1952],{},[13,2120,2121],{},"\"all\"",", and ",[13,2124,1940],{},[13,2126,259],{},[10,2128,2129],{},"Each finding record always carries every one of these keys:",[26,2131,2132,2144],{},[29,2133,2134],{},[32,2135,2136,2139,2141],{},[35,2137,2138],{},"Field",[35,2140,237],{},[35,2142,2143],{},"Null?",[45,2145,2146,2157,2168,2179,2193,2203,2217,2228,2239,2250,2261,2283,2300,2314,2325],{},[32,2147,2148,2152,2154],{},[50,2149,2150],{},[13,2151,1596],{},[50,2153,376],{},[50,2155,2156],{},"no",[32,2158,2159,2164,2166],{},[50,2160,2161],{},[13,2162,2163],{},"fingerprint",[50,2165,272],{},[50,2167,2156],{},[32,2169,2170,2175,2177],{},[50,2171,2172],{},[13,2173,2174],{},"canonical_title",[50,2176,272],{},[50,2178,2156],{},[32,2180,2181,2186,2188],{},[50,2182,2183],{},[13,2184,2185],{},"canonical_severity",[50,2187,272],{},[50,2189,2190],{},[113,2191,2192],{},"yes",[32,2194,2195,2199,2201],{},[50,2196,2197],{},[13,2198,1763],{},[50,2200,272],{},[50,2202,2156],{},[32,2204,2205,2213,2215],{},[50,2206,2207,282,2210],{},[13,2208,2209],{},"bucket_code",[13,2211,2212],{},"bucket_name",[50,2214,272],{},[50,2216,2192],{},[32,2218,2219,2224,2226],{},[50,2220,2221],{},[13,2222,2223],{},"discovered_in_campaign_id",[50,2225,376],{},[50,2227,2192],{},[32,2229,2230,2235,2237],{},[50,2231,2232],{},[13,2233,2234],{},"campaign_name",[50,2236,272],{},[50,2238,2192],{},[32,2240,2241,2246,2248],{},[50,2242,2243],{},[13,2244,2245],{},"primary_file",[50,2247,272],{},[50,2249,2192],{},[32,2251,2252,2257,2259],{},[50,2253,2254],{},[13,2255,2256],{},"reports",[50,2258,376],{},[50,2260,2156],{},[32,2262,2263,2274,2278],{},[50,2264,2265,282,2268,282,2271],{},[13,2266,2267],{},"models",[13,2269,2270],{},"passes",[13,2272,2273],{},"profiles_seen",[50,2275,272,2276],{},[874,2277],{},[50,2279,2280,2281,755],{},"no (",[13,2282,127],{},[32,2284,2285,2296,2298],{},[50,2286,2287,282,2290,282,2293],{},[13,2288,2289],{},"first_seen_commit",[13,2291,2292],{},"last_seen_commit",[13,2294,2295],{},"fixed_at_commit",[50,2297,272],{},[50,2299,2192],{},[32,2301,2302,2310,2312],{},[50,2303,2304,282,2307],{},[13,2305,2306],{},"first_seen_branch",[13,2308,2309],{},"last_seen_branch",[50,2311,272],{},[50,2313,2192],{},[32,2315,2316,2321,2323],{},[50,2317,2318],{},[13,2319,2320],{},"updated_at",[50,2322,272],{},[50,2324,2192],{},[32,2326,2327,2332,2334],{},[50,2328,2329],{},[13,2330,2331],{},"web_url",[50,2333,272],{},[50,2335,2156],{},[2337,2338,2340,2341,78,2344,2347],"h4",{"id":2339},"how-paginationtotal-and-summary-relate","How ",[13,2342,2343],{},"pagination.total",[13,2345,2346],{},"summary.*"," relate",[10,2349,2350,2351,2354,2355,2358,2359,747,2361,747,2364,579,2367,78,2369,2372,2373,2376,2377,2379],{},"Both are computed server-side over the ",[113,2352,2353],{},"same"," filtered set — the ",[13,2356,2357],{},"WHERE"," clause you asked for.\n",[13,2360,2343],{},[113,2362,2363],{},"is",[13,2365,2366],{},"summary.total",[13,2368,766],{},[13,2370,2371],{},"summary.severe_open"," additionally\napply the summary predicate ",[13,2374,2375],{},"status NOT IN ('fixed','false_positive')",", which is exactly the ",[13,2378,281],{},"\npredicate. Consequences, all true by construction:",[2381,2382,2383,2398,2424,2433],"ul",{},[1328,2384,182,2385,2387,2388,2390,2391,2394,2395,2397],{},[13,2386,338],{}," (or ",[13,2389,326],{},"): ",[13,2392,2393],{},"pagination.total == summary.total == summary.open",", and all\nthree equal the number the web dashboard and ",[13,2396,770],{}," show.",[1328,2399,182,2400,2387,2402,2390,2404,2406,2407,2410,2411,2414,2415,2417,2418,2420,2421],{},[13,2401,362],{},[13,2403,345],{},[13,2405,2393],{}," too, because ",[13,2408,2409],{},"actionable ⊂ open"," — but the number is ",[113,2412,2413],{},"smaller"," than the\ndashboard's, by exactly the count of ",[13,2416,849],{}," + ",[13,2419,852],{}," findings. That gap is the answer to\n",[143,2422,2423],{},"\"how many risks have we deliberately accepted?\"",[1328,2425,182,2426,2429,2430,134],{},[13,2427,2428],{},"--status closed",": ",[13,2431,2432],{},"summary.open == 0",[1328,2434,2435,2436,2429,2438,2440,2441,2443],{},"With no ",[13,2437,342],{},[13,2439,2366],{}," is everything and ",[13,2442,766],{}," is its open subset.",[10,2445,2446,2447,2449,2450,1459,2452,2122,2454,2457,2458,2460,2461,2463,2464,2466,2467,282,2469,282,2471,2122,2473,2475,2476,2479,2480,2483,2484,2487,2488,2490],{},"In ",[13,2448,536],{}," mode the export endpoint carries no summary block, so ",[13,2451,766],{},[13,2453,2371],{},[13,2455,2456],{},"summary.needs_retest"," are ",[13,2459,119],{}," while ",[13,2462,2366],{}," is the export's\nown total. Two more ",[13,2465,536],{}," caveats: ",[13,2468,2256],{},[13,2470,2267],{},[13,2472,2270],{},[13,2474,2245],{}," are derived\nfrom the export's nested ",[13,2477,2478],{},"reports[]"," (count; distinct sorted ",[13,2481,2482],{},"model_code","; distinct sorted\n",[13,2485,2486],{},"pass_code","; lexicographically lowest cited path), and ",[13,2489,2273],{}," is derived from report\nprovenance rather than from sightings.",[96,2492,2494],{"id":2493},"findingsshow",[13,2495,1699],{},[10,2497,2498,2501,2502,282,2505,282,2508,2511,2512,2515,2516,282,2518,282,2521,282,2524,2122,2527,134],{},[13,2499,2500],{},"finding"," carries the list record plus ",[13,2503,2504],{},"merged_into_finding_id",[13,2506,2507],{},"fixed_at_branch",[13,2509,2510],{},"notes",", and\n",[13,2513,2514],{},"created_at",". Then ",[13,2517,2478],{},[13,2519,2520],{},"sightings[]",[13,2522,2523],{},"history[]",[13,2525,2526],{},"fixes[]",[13,2528,2529],{},"false_positives[]",[661,2531,2532,2537,2538,282,2541,1459,2543,282,2545,2122,2547,2549,2550,78,2552,2554,2555,2558,2559,2562,2563,1302,2566,2569,2570,2573,2574,2577],{},[113,2533,2534,2535,134],{},"The four rollups are scoped differently here than on ",[13,2536,225],{}," On ",[13,2539,2540],{},"show",[13,2542,2256],{},[13,2544,2267],{},[13,2546,2270],{},[13,2548,2273],{}," are derived from the ",[13,2551,2478],{},[13,2553,2520],{}," this\nresponse carries, and those are filtered to the resolved profile. On ",[13,2556,2557],{},"list"," the same-named columns\ncount the whole finding regardless of profile. So for a finding sighted under both profiles,\n",[13,2560,2561],{},"findings list --profile security"," may report ",[13,2564,2565],{},"\"reports\": 4, \"models\": [\"opus\",\"sonnet\"]",[13,2567,2568],{},"findings show --profile security"," reports ",[13,2571,2572],{},"\"reports\": 2, \"models\": [\"sonnet\"]"," for the same id.\nPass ",[13,2575,2576],{},"--profile all"," to make the two agree.",[10,2579,2580,2581,1452],{},"One element of ",[13,2582,2478],{},[211,2584,2586],{"className":1429,"code":2585,"language":1431,"meta":219,"style":219},"{\n  \"id\": 702, \"ordinal\": 1, \"title\": \"…\", \"severity\": \"high\",\n  \"confidence\": null, \"cvss_v4_score\": null, \"cvss_v4_vector\": null,\n  \"evidence\": \"…\", \"exploit_scenario\": null, \"impact\": \"…\", \"recommendation\": \"…\",\n  \"model_code\": \"sonnet\", \"model_name\": \"Sonnet\",\n  \"pass_code\": \"http\", \"pass_name\": \"HTTP surface\",\n  \"bucket_code\": \"core\", \"profile\": \"security\",\n  \"slice_id\": 9, \"slice_status\": \"completed\",\n  \"categories\": [\"authz\"],\n  \"cwes\": [\"CWE-89\"],\n  \"files\": [ { \"path\": \"src\u002Fdb.ts\", \"line\": 42 } ],\n  \"reproduction_steps\": null, \"expected_behavior\": null,\n  \"actual_behavior\": null, \"root_cause\": null, \"test_suggestion\": null\n}\n",[13,2587,2588,2592,2652,2687,2751,2788,2825,2860,2894,2917,2939,2987,3011,3048],{"__ignoreMap":219},[874,2589,2590],{"class":876,"line":877},[874,2591,1438],{"class":902},[874,2593,2594,2596,2598,2600,2602,2605,2607,2609,2612,2614,2616,2618,2620,2622,2624,2626,2628,2630,2632,2634,2636,2638,2640,2642,2644,2646,2648,2650],{"class":876,"line":922},[874,2595,1443],{"class":902},[874,2597,1596],{"class":1446},[874,2599,1449],{"class":902},[874,2601,1452],{"class":902},[874,2603,2604],{"class":1455}," 702",[874,2606,1606],{"class":902},[874,2608,1474],{"class":902},[874,2610,2611],{"class":1446},"ordinal",[874,2613,1449],{"class":902},[874,2615,1452],{"class":902},[874,2617,1456],{"class":1455},[874,2619,1606],{"class":902},[874,2621,1474],{"class":902},[874,2623,464],{"class":1446},[874,2625,1449],{"class":902},[874,2627,1452],{"class":902},[874,2629,1474],{"class":902},[874,2631,2065],{"class":883},[874,2633,1449],{"class":902},[874,2635,1606],{"class":902},[874,2637,1474],{"class":902},[874,2639,675],{"class":1446},[874,2641,1449],{"class":902},[874,2643,1452],{"class":902},[874,2645,1474],{"class":902},[874,2647,307],{"class":883},[874,2649,1449],{"class":902},[874,2651,1459],{"class":902},[874,2653,2654,2656,2659,2661,2663,2665,2667,2670,2672,2674,2676,2678,2681,2683,2685],{"class":876,"line":1462},[874,2655,1443],{"class":902},[874,2657,2658],{"class":1446},"confidence",[874,2660,1449],{"class":902},[874,2662,1452],{"class":902},[874,2664,1818],{"class":902},[874,2666,1474],{"class":902},[874,2668,2669],{"class":1446},"cvss_v4_score",[874,2671,1449],{"class":902},[874,2673,1452],{"class":902},[874,2675,1818],{"class":902},[874,2677,1474],{"class":902},[874,2679,2680],{"class":1446},"cvss_v4_vector",[874,2682,1449],{"class":902},[874,2684,1452],{"class":902},[874,2686,1803],{"class":902},[874,2688,2689,2691,2694,2696,2698,2700,2702,2704,2706,2708,2711,2713,2715,2717,2719,2722,2724,2726,2728,2730,2732,2734,2736,2739,2741,2743,2745,2747,2749],{"class":876,"line":1484},[874,2690,1443],{"class":902},[874,2692,2693],{"class":1446},"evidence",[874,2695,1449],{"class":902},[874,2697,1452],{"class":902},[874,2699,1474],{"class":902},[874,2701,2065],{"class":883},[874,2703,1449],{"class":902},[874,2705,1606],{"class":902},[874,2707,1474],{"class":902},[874,2709,2710],{"class":1446},"exploit_scenario",[874,2712,1449],{"class":902},[874,2714,1452],{"class":902},[874,2716,1818],{"class":902},[874,2718,1474],{"class":902},[874,2720,2721],{"class":1446},"impact",[874,2723,1449],{"class":902},[874,2725,1452],{"class":902},[874,2727,1474],{"class":902},[874,2729,2065],{"class":883},[874,2731,1449],{"class":902},[874,2733,1606],{"class":902},[874,2735,1474],{"class":902},[874,2737,2738],{"class":1446},"recommendation",[874,2740,1449],{"class":902},[874,2742,1452],{"class":902},[874,2744,1474],{"class":902},[874,2746,2065],{"class":883},[874,2748,1449],{"class":902},[874,2750,1459],{"class":902},[874,2752,2753,2755,2757,2759,2761,2763,2766,2768,2770,2772,2775,2777,2779,2781,2784,2786],{"class":876,"line":1505},[874,2754,1443],{"class":902},[874,2756,2482],{"class":1446},[874,2758,1449],{"class":902},[874,2760,1452],{"class":902},[874,2762,1474],{"class":902},[874,2764,2765],{"class":883},"sonnet",[874,2767,1449],{"class":902},[874,2769,1606],{"class":902},[874,2771,1474],{"class":902},[874,2773,2774],{"class":1446},"model_name",[874,2776,1449],{"class":902},[874,2778,1452],{"class":902},[874,2780,1474],{"class":902},[874,2782,2783],{"class":883},"Sonnet",[874,2785,1449],{"class":902},[874,2787,1459],{"class":902},[874,2789,2790,2792,2794,2796,2798,2800,2803,2805,2807,2809,2812,2814,2816,2818,2821,2823],{"class":876,"line":1526},[874,2791,1443],{"class":902},[874,2793,2486],{"class":1446},[874,2795,1449],{"class":902},[874,2797,1452],{"class":902},[874,2799,1474],{"class":902},[874,2801,2802],{"class":883},"http",[874,2804,1449],{"class":902},[874,2806,1606],{"class":902},[874,2808,1474],{"class":902},[874,2810,2811],{"class":1446},"pass_name",[874,2813,1449],{"class":902},[874,2815,1452],{"class":902},[874,2817,1474],{"class":902},[874,2819,2820],{"class":883},"HTTP surface",[874,2822,1449],{"class":902},[874,2824,1459],{"class":902},[874,2826,2827,2829,2831,2833,2835,2837,2840,2842,2844,2846,2848,2850,2852,2854,2856,2858],{"class":876,"line":1541},[874,2828,1443],{"class":902},[874,2830,2209],{"class":1446},[874,2832,1449],{"class":902},[874,2834,1452],{"class":902},[874,2836,1474],{"class":902},[874,2838,2839],{"class":883},"core",[874,2841,1449],{"class":902},[874,2843,1606],{"class":902},[874,2845,1474],{"class":902},[874,2847,1651],{"class":1446},[874,2849,1449],{"class":902},[874,2851,1452],{"class":902},[874,2853,1474],{"class":902},[874,2855,481],{"class":883},[874,2857,1449],{"class":902},[874,2859,1459],{"class":902},[874,2861,2862,2864,2867,2869,2871,2874,2876,2878,2881,2883,2885,2887,2890,2892],{"class":876,"line":1558},[874,2863,1443],{"class":902},[874,2865,2866],{"class":1446},"slice_id",[874,2868,1449],{"class":902},[874,2870,1452],{"class":902},[874,2872,2873],{"class":1455}," 9",[874,2875,1606],{"class":902},[874,2877,1474],{"class":902},[874,2879,2880],{"class":1446},"slice_status",[874,2882,1449],{"class":902},[874,2884,1452],{"class":902},[874,2886,1474],{"class":902},[874,2888,2889],{"class":883},"completed",[874,2891,1449],{"class":902},[874,2893,1459],{"class":902},[874,2895,2896,2898,2901,2903,2905,2907,2909,2912,2914],{"class":876,"line":1579},[874,2897,1443],{"class":902},[874,2899,2900],{"class":1446},"categories",[874,2902,1449],{"class":902},[874,2904,1452],{"class":902},[874,2906,2045],{"class":902},[874,2908,1449],{"class":902},[874,2910,2911],{"class":883},"authz",[874,2913,1449],{"class":902},[874,2915,2916],{"class":902},"],\n",[874,2918,2919,2921,2924,2926,2928,2930,2932,2935,2937],{"class":876,"line":1646},[874,2920,1443],{"class":902},[874,2922,2923],{"class":1446},"cwes",[874,2925,1449],{"class":902},[874,2927,1452],{"class":902},[874,2929,2045],{"class":902},[874,2931,1449],{"class":902},[874,2933,2934],{"class":883},"CWE-89",[874,2936,1449],{"class":902},[874,2938,2916],{"class":902},[874,2940,2941,2943,2946,2948,2950,2952,2954,2956,2959,2961,2963,2965,2968,2970,2972,2974,2976,2978,2980,2982,2984],{"class":876,"line":1666},[874,2942,1443],{"class":902},[874,2944,2945],{"class":1446},"files",[874,2947,1449],{"class":902},[874,2949,1452],{"class":902},[874,2951,2045],{"class":902},[874,2953,1591],{"class":902},[874,2955,1474],{"class":902},[874,2957,2958],{"class":880},"path",[874,2960,1449],{"class":902},[874,2962,1452],{"class":902},[874,2964,1474],{"class":902},[874,2966,2967],{"class":883},"src\u002Fdb.ts",[874,2969,1449],{"class":902},[874,2971,1606],{"class":902},[874,2973,1474],{"class":902},[874,2975,876],{"class":880},[874,2977,1449],{"class":902},[874,2979,1452],{"class":902},[874,2981,1603],{"class":1455},[874,2983,2078],{"class":902},[874,2985,2986],{"class":902}," ],\n",[874,2988,2989,2991,2994,2996,2998,3000,3002,3005,3007,3009],{"class":876,"line":1686},[874,2990,1443],{"class":902},[874,2992,2993],{"class":1446},"reproduction_steps",[874,2995,1449],{"class":902},[874,2997,1452],{"class":902},[874,2999,1818],{"class":902},[874,3001,1474],{"class":902},[874,3003,3004],{"class":1446},"expected_behavior",[874,3006,1449],{"class":902},[874,3008,1452],{"class":902},[874,3010,1803],{"class":902},[874,3012,3014,3016,3019,3021,3023,3025,3027,3030,3032,3034,3036,3038,3041,3043,3045],{"class":876,"line":3013},13,[874,3015,1443],{"class":902},[874,3017,3018],{"class":1446},"actual_behavior",[874,3020,1449],{"class":902},[874,3022,1452],{"class":902},[874,3024,1818],{"class":902},[874,3026,1474],{"class":902},[874,3028,3029],{"class":1446},"root_cause",[874,3031,1449],{"class":902},[874,3033,1452],{"class":902},[874,3035,1818],{"class":902},[874,3037,1474],{"class":902},[874,3039,3040],{"class":1446},"test_suggestion",[874,3042,1449],{"class":902},[874,3044,1452],{"class":902},[874,3046,3047],{"class":902}," null\n",[874,3049,3051],{"class":876,"line":3050},14,[874,3052,1689],{"class":902},[10,3054,3055,282,3057,2122,3059,3061,3062,1099,3065,3069,3070,3072,3073,3075],{},[13,3056,2900],{},[13,3058,2923],{},[13,3060,2945],{}," come from the server's structured arrays and are copied\n",[113,3063,3064],{},"verbatim",[148,3066,3068],{"href":3067},"#what-the-cli-never-does","What the CLI never does",". The five bug fields are\nemitted always (",[13,3071,119],{}," under the ",[13,3074,481],{}," profile) so keys are never omitted.",[10,3077,3078,3079,3081,3082,3084],{},"The other four arrays are answers to four different questions. Each is ",[13,3080,127],{}," when empty, never\n",[13,3083,119],{},", and every key below is always present.",[10,3086,3087,3092],{},[113,3088,3089,3091],{},[13,3090,2520],{}," — where and when this finding has been seen."," One row per campaign that sighted it.",[211,3094,3096],{"className":1429,"code":3095,"language":1431,"meta":219,"style":219},"{ \"campaign_id\": 81, \"profile\": \"security\", \"branch\": \"main\",\n  \"commit\": \"9f2c1ab\", \"first_seen_at\": \"2026-07-21T09:12:04Z\", \"last_seen_at\": \"2026-07-28T14:00:51Z\" }\n",[13,3097,3098,3150],{"__ignoreMap":219},[874,3099,3100,3103,3105,3108,3110,3112,3115,3117,3119,3121,3123,3125,3127,3129,3131,3133,3135,3137,3139,3141,3143,3146,3148],{"class":876,"line":877},[874,3101,3102],{"class":902},"{",[874,3104,1474],{"class":902},[874,3106,3107],{"class":1446},"campaign_id",[874,3109,1449],{"class":902},[874,3111,1452],{"class":902},[874,3113,3114],{"class":1455}," 81",[874,3116,1606],{"class":902},[874,3118,1474],{"class":902},[874,3120,1651],{"class":1446},[874,3122,1449],{"class":902},[874,3124,1452],{"class":902},[874,3126,1474],{"class":902},[874,3128,481],{"class":883},[874,3130,1449],{"class":902},[874,3132,1606],{"class":902},[874,3134,1474],{"class":902},[874,3136,1811],{"class":1446},[874,3138,1449],{"class":902},[874,3140,1452],{"class":902},[874,3142,1474],{"class":902},[874,3144,3145],{"class":883},"main",[874,3147,1449],{"class":902},[874,3149,1459],{"class":902},[874,3151,3152,3154,3157,3159,3161,3163,3166,3168,3170,3172,3175,3177,3179,3181,3184,3186,3188,3190,3193,3195,3197,3199,3202,3204],{"class":876,"line":922},[874,3153,1443],{"class":902},[874,3155,3156],{"class":1446},"commit",[874,3158,1449],{"class":902},[874,3160,1452],{"class":902},[874,3162,1474],{"class":902},[874,3164,3165],{"class":883},"9f2c1ab",[874,3167,1449],{"class":902},[874,3169,1606],{"class":902},[874,3171,1474],{"class":902},[874,3173,3174],{"class":1446},"first_seen_at",[874,3176,1449],{"class":902},[874,3178,1452],{"class":902},[874,3180,1474],{"class":902},[874,3182,3183],{"class":883},"2026-07-21T09:12:04Z",[874,3185,1449],{"class":902},[874,3187,1606],{"class":902},[874,3189,1474],{"class":902},[874,3191,3192],{"class":1446},"last_seen_at",[874,3194,1449],{"class":902},[874,3196,1452],{"class":902},[874,3198,1474],{"class":902},[874,3200,3201],{"class":883},"2026-07-28T14:00:51Z",[874,3203,1449],{"class":902},[874,3205,3206],{"class":902}," }\n",[10,3208,3209,3211,3212,282,3214,282,3216,282,3218,2122,3220,3222,3223,579,3226,3228,3229,3231],{},[13,3210,3107],{}," is an integer; ",[13,3213,1651],{},[13,3215,1811],{},[13,3217,3156],{},[13,3219,3174],{},[13,3221,3192],{}," are\n",[13,3224,3225],{},"string|null",[13,3227,2273],{}," on the finding record is the distinct sorted ",[13,3230,1651],{}," set of this\narray.",[10,3233,3234,3239,3240,3242],{},[113,3235,3236,3238],{},[13,3237,2523],{}," — the triage timeline",", newest first. This is what the web UI's history panel shows,\nand what ",[13,3241,593],{}," appends to.",[211,3244,3246],{"className":1429,"code":3245,"language":1431,"meta":219,"style":219},"{ \"id\": 3311, \"from_status\": \"new\", \"to_status\": \"accepted\",\n  \"decider\": \"thespider-agent@build-01\", \"actor_user_id\": null,\n  \"notes\": \"risk accepted for the 2026-Q3 release\", \"created_at\": \"2026-07-28T14:00:51Z\" }\n",[13,3247,3248,3300,3331],{"__ignoreMap":219},[874,3249,3250,3252,3254,3256,3258,3260,3263,3265,3267,3270,3272,3274,3276,3279,3281,3283,3285,3288,3290,3292,3294,3296,3298],{"class":876,"line":877},[874,3251,3102],{"class":902},[874,3253,1474],{"class":902},[874,3255,1596],{"class":1446},[874,3257,1449],{"class":902},[874,3259,1452],{"class":902},[874,3261,3262],{"class":1455}," 3311",[874,3264,1606],{"class":902},[874,3266,1474],{"class":902},[874,3268,3269],{"class":1446},"from_status",[874,3271,1449],{"class":902},[874,3273,1452],{"class":902},[874,3275,1474],{"class":902},[874,3277,3278],{"class":883},"new",[874,3280,1449],{"class":902},[874,3282,1606],{"class":902},[874,3284,1474],{"class":902},[874,3286,3287],{"class":1446},"to_status",[874,3289,1449],{"class":902},[874,3291,1452],{"class":902},[874,3293,1474],{"class":902},[874,3295,849],{"class":883},[874,3297,1449],{"class":902},[874,3299,1459],{"class":902},[874,3301,3302,3304,3307,3309,3311,3313,3316,3318,3320,3322,3325,3327,3329],{"class":876,"line":922},[874,3303,1443],{"class":902},[874,3305,3306],{"class":1446},"decider",[874,3308,1449],{"class":902},[874,3310,1452],{"class":902},[874,3312,1474],{"class":902},[874,3314,3315],{"class":883},"thespider-agent@build-01",[874,3317,1449],{"class":902},[874,3319,1606],{"class":902},[874,3321,1474],{"class":902},[874,3323,3324],{"class":1446},"actor_user_id",[874,3326,1449],{"class":902},[874,3328,1452],{"class":902},[874,3330,1803],{"class":902},[874,3332,3333,3335,3337,3339,3341,3343,3346,3348,3350,3352,3354,3356,3358,3360,3362,3364],{"class":876,"line":1462},[874,3334,1443],{"class":902},[874,3336,2510],{"class":1446},[874,3338,1449],{"class":902},[874,3340,1452],{"class":902},[874,3342,1474],{"class":902},[874,3344,3345],{"class":883},"risk accepted for the 2026-Q3 release",[874,3347,1449],{"class":902},[874,3349,1606],{"class":902},[874,3351,1474],{"class":902},[874,3353,2514],{"class":1446},[874,3355,1449],{"class":902},[874,3357,1452],{"class":902},[874,3359,1474],{"class":902},[874,3361,3201],{"class":883},[874,3363,1449],{"class":902},[874,3365,3206],{"class":902},[10,3367,3368,3370,3371,1713,3373,3376,3377,282,3379,282,3381,282,3383,282,3385,2457,3387,579,3389,3391,3392,3395],{},[13,3369,1596],{}," is an integer, ",[13,3372,3324],{},[13,3374,3375],{},"int|null"," (null for a CLI-driven change), and\n",[13,3378,3269],{},[13,3380,3287],{},[13,3382,3306],{},[13,3384,2510],{},[13,3386,2514],{},[13,3388,3225],{},[13,3390,3306],{}," is the\nattribution string — ",[13,3393,3394],{},"history[0].decider"," is how you check who last moved a finding.",[10,3397,3398,3403],{},[113,3399,3400,3402],{},[13,3401,2526],{}," — remediation records"," linked to this finding.",[211,3405,3407],{"className":1429,"code":3406,"language":1431,"meta":219,"style":219},"{ \"id\": 44, \"status\": \"proposed\", \"description\": \"parameterized the query\",\n  \"pr_url\": \"https:\u002F\u002F…\u002Fmerge_requests\u002F128\", \"ticket_url\": null,\n  \"commits\": [\"9f2c1ab\", \"c4d5e6f\"], \"resolved_at\": \"2026-07-27T18:22:10Z\" }\n",[13,3408,3409,3461,3492],{"__ignoreMap":219},[874,3410,3411,3413,3415,3417,3419,3421,3424,3426,3428,3430,3432,3434,3436,3439,3441,3443,3445,3448,3450,3452,3454,3457,3459],{"class":876,"line":877},[874,3412,3102],{"class":902},[874,3414,1474],{"class":902},[874,3416,1596],{"class":1446},[874,3418,1449],{"class":902},[874,3420,1452],{"class":902},[874,3422,3423],{"class":1455}," 44",[874,3425,1606],{"class":902},[874,3427,1474],{"class":902},[874,3429,1763],{"class":1446},[874,3431,1449],{"class":902},[874,3433,1452],{"class":902},[874,3435,1474],{"class":902},[874,3437,3438],{"class":883},"proposed",[874,3440,1449],{"class":902},[874,3442,1606],{"class":902},[874,3444,1474],{"class":902},[874,3446,3447],{"class":1446},"description",[874,3449,1449],{"class":902},[874,3451,1452],{"class":902},[874,3453,1474],{"class":902},[874,3455,3456],{"class":883},"parameterized the query",[874,3458,1449],{"class":902},[874,3460,1459],{"class":902},[874,3462,3463,3465,3468,3470,3472,3474,3477,3479,3481,3483,3486,3488,3490],{"class":876,"line":922},[874,3464,1443],{"class":902},[874,3466,3467],{"class":1446},"pr_url",[874,3469,1449],{"class":902},[874,3471,1452],{"class":902},[874,3473,1474],{"class":902},[874,3475,3476],{"class":883},"https:\u002F\u002F…\u002Fmerge_requests\u002F128",[874,3478,1449],{"class":902},[874,3480,1606],{"class":902},[874,3482,1474],{"class":902},[874,3484,3485],{"class":1446},"ticket_url",[874,3487,1449],{"class":902},[874,3489,1452],{"class":902},[874,3491,1803],{"class":902},[874,3493,3494,3496,3499,3501,3503,3505,3507,3509,3511,3513,3515,3518,3520,3523,3525,3528,3530,3532,3534,3537,3539],{"class":876,"line":1462},[874,3495,1443],{"class":902},[874,3497,3498],{"class":1446},"commits",[874,3500,1449],{"class":902},[874,3502,1452],{"class":902},[874,3504,2045],{"class":902},[874,3506,1449],{"class":902},[874,3508,3165],{"class":883},[874,3510,1449],{"class":902},[874,3512,1606],{"class":902},[874,3514,1474],{"class":902},[874,3516,3517],{"class":883},"c4d5e6f",[874,3519,1449],{"class":902},[874,3521,3522],{"class":902},"],",[874,3524,1474],{"class":902},[874,3526,3527],{"class":1446},"resolved_at",[874,3529,1449],{"class":902},[874,3531,1452],{"class":902},[874,3533,1474],{"class":902},[874,3535,3536],{"class":883},"2026-07-27T18:22:10Z",[874,3538,1449],{"class":902},[874,3540,3206],{"class":902},[10,3542,3543,3370,3545,509,3547,2095,3550,3552,3553,282,3555,1459,3557,282,3559,282,3561,2457,3563,134],{},[13,3544,1596],{},[13,3546,3498],{},[13,3548,3549],{},"string[]",[13,3551,127],{}," when none), and ",[13,3554,1763],{},[13,3556,3447],{},[13,3558,3467],{},[13,3560,3485],{},[13,3562,3527],{},[13,3564,3225],{},[10,3566,3567,3572],{},[113,3568,3569,3571],{},[13,3570,2529],{}," — dismissals",", each with the commit it was recorded against.",[211,3574,3576],{"className":1429,"code":3575,"language":1431,"meta":219,"style":219},"{ \"id\": 12, \"reason\": \"test fixture, not reachable in production\",\n  \"decider\": \"alice@acme.example\", \"applies_until_commit\": \"9f2c1ab\",\n  \"created_at\": \"2026-07-24T11:03:00Z\" }\n",[13,3577,3578,3612,3648],{"__ignoreMap":219},[874,3579,3580,3582,3584,3586,3588,3590,3592,3594,3596,3599,3601,3603,3605,3608,3610],{"class":876,"line":877},[874,3581,3102],{"class":902},[874,3583,1474],{"class":902},[874,3585,1596],{"class":1446},[874,3587,1449],{"class":902},[874,3589,1452],{"class":902},[874,3591,2015],{"class":1455},[874,3593,1606],{"class":902},[874,3595,1474],{"class":902},[874,3597,3598],{"class":1446},"reason",[874,3600,1449],{"class":902},[874,3602,1452],{"class":902},[874,3604,1474],{"class":902},[874,3606,3607],{"class":883},"test fixture, not reachable in production",[874,3609,1449],{"class":902},[874,3611,1459],{"class":902},[874,3613,3614,3616,3618,3620,3622,3624,3627,3629,3631,3633,3636,3638,3640,3642,3644,3646],{"class":876,"line":922},[874,3615,1443],{"class":902},[874,3617,3306],{"class":1446},[874,3619,1449],{"class":902},[874,3621,1452],{"class":902},[874,3623,1474],{"class":902},[874,3625,3626],{"class":883},"alice@acme.example",[874,3628,1449],{"class":902},[874,3630,1606],{"class":902},[874,3632,1474],{"class":902},[874,3634,3635],{"class":1446},"applies_until_commit",[874,3637,1449],{"class":902},[874,3639,1452],{"class":902},[874,3641,1474],{"class":902},[874,3643,3165],{"class":883},[874,3645,1449],{"class":902},[874,3647,1459],{"class":902},[874,3649,3650,3652,3654,3656,3658,3660,3663,3665],{"class":876,"line":1462},[874,3651,1443],{"class":902},[874,3653,2514],{"class":1446},[874,3655,1449],{"class":902},[874,3657,1452],{"class":902},[874,3659,1474],{"class":902},[874,3661,3662],{"class":883},"2026-07-24T11:03:00Z",[874,3664,1449],{"class":902},[874,3666,3206],{"class":902},[10,3668,3669,3211,3671,282,3673,282,3675,2122,3677,3222,3679,579,3681,3683,3684,134],{},[13,3670,1596],{},[13,3672,3598],{},[13,3674,3306],{},[13,3676,3635],{},[13,3678,2514],{},[13,3680,3225],{},[13,3682,3635],{}," is the commit the dismissal was recorded through — the web UI\nrenders it as ",[143,3685,3686],{},"\"Applies through \u003Ccommit>\"",[10,3688,3689,3690,3692,3693,3695],{},"A merged finding is reported, never silently redirected: ",[13,3691,2504],{}," names the\ncanonical id, and ",[13,3694,593],{}," refuses to write against a tombstone.",[96,3697,3699],{"id":3698},"findingstriage",[13,3700,1702],{},[211,3702,3704],{"className":1429,"code":3703,"language":1431,"meta":219,"style":219},"{ \"change\": { \"finding_id\": 501, \"from_status\": \"new\", \"to_status\": \"triaged\",\n              \"decider\": \"thespider-agent@build-01\", \"actor_user_id\": null,\n              \"reason\": null, \"notes\": null, \"commits\": [] } }\n",[13,3705,3706,3767,3796],{"__ignoreMap":219},[874,3707,3708,3710,3712,3715,3717,3719,3721,3723,3726,3728,3730,3732,3734,3736,3738,3740,3742,3744,3746,3748,3750,3752,3754,3756,3758,3760,3763,3765],{"class":876,"line":877},[874,3709,3102],{"class":902},[874,3711,1474],{"class":902},[874,3713,3714],{"class":1446},"change",[874,3716,1449],{"class":902},[874,3718,1452],{"class":902},[874,3720,1591],{"class":902},[874,3722,1474],{"class":902},[874,3724,3725],{"class":880},"finding_id",[874,3727,1449],{"class":902},[874,3729,1452],{"class":902},[874,3731,2058],{"class":1455},[874,3733,1606],{"class":902},[874,3735,1474],{"class":902},[874,3737,3269],{"class":880},[874,3739,1449],{"class":902},[874,3741,1452],{"class":902},[874,3743,1474],{"class":902},[874,3745,3278],{"class":883},[874,3747,1449],{"class":902},[874,3749,1606],{"class":902},[874,3751,1474],{"class":902},[874,3753,3287],{"class":880},[874,3755,1449],{"class":902},[874,3757,1452],{"class":902},[874,3759,1474],{"class":902},[874,3761,3762],{"class":883},"triaged",[874,3764,1449],{"class":902},[874,3766,1459],{"class":902},[874,3768,3769,3772,3774,3776,3778,3780,3782,3784,3786,3788,3790,3792,3794],{"class":876,"line":922},[874,3770,3771],{"class":902},"              \"",[874,3773,3306],{"class":880},[874,3775,1449],{"class":902},[874,3777,1452],{"class":902},[874,3779,1474],{"class":902},[874,3781,3315],{"class":883},[874,3783,1449],{"class":902},[874,3785,1606],{"class":902},[874,3787,1474],{"class":902},[874,3789,3324],{"class":880},[874,3791,1449],{"class":902},[874,3793,1452],{"class":902},[874,3795,1803],{"class":902},[874,3797,3798,3800,3802,3804,3806,3808,3810,3812,3814,3816,3818,3820,3822,3824,3826,3829,3831],{"class":876,"line":1462},[874,3799,3771],{"class":902},[874,3801,3598],{"class":880},[874,3803,1449],{"class":902},[874,3805,1452],{"class":902},[874,3807,1818],{"class":902},[874,3809,1474],{"class":902},[874,3811,2510],{"class":880},[874,3813,1449],{"class":902},[874,3815,1452],{"class":902},[874,3817,1818],{"class":902},[874,3819,1474],{"class":902},[874,3821,3498],{"class":880},[874,3823,1449],{"class":902},[874,3825,1452],{"class":902},[874,3827,3828],{"class":902}," []",[874,3830,2078],{"class":902},[874,3832,3206],{"class":902},[10,3834,3835,3837,3838,2387,3841,3843,3844,3846],{},[13,3836,3306],{}," is never null: it defaults to ",[13,3839,3840],{},"thespider-agent@\u003Chost>",[13,3842,15],{}," when no\nhostname is available) and is overridable with ",[13,3845,615],{},". It is what the web UI history timeline\nattributes the change to.",[96,3848,3850,78,3852],{"id":3849},"findingspacket-and-findingscopy",[13,3851,1705],{},[13,3853,1708],{},[10,3855,3856,3858,3859,3861,3862,282,3864,1459,3866,282,3868,282,3870,2122,3872,579,3874,3876,3877,3880,3881,3884,3885,3887,3888,1713,3890,3892],{},[13,3857,564],{}," (the full markdown, as a string) plus a ",[13,3860,2500],{}," object with ",[13,3863,1596],{},[13,3865,2163],{},[13,3867,2185],{},[13,3869,1763],{},[13,3871,2504],{},[13,3873,2331],{},[13,3875,1708],{}," adds\n",[13,3878,3879],{},"copied"," (bool) and ",[13,3882,3883],{},"bytes"," (int). ",[13,3886,564],{}," is present even when ",[13,3889,3879],{},[13,3891,259],{},", so a JSON\nconsumer always has the payload.",[10,3894,3895,1334,3897,3900,3901,428,3904,428,3907,428,3910,3913,3914,3917,3918,3920,3921,3923,3924,637,3926,3928,3929,3931],{},[13,3896,3879],{},[143,3898,3899],{},"a clipboard method accepted the document",", which is not always a verifiable fact.\nA local clipboard tool (",[13,3902,3903],{},"pbcopy",[13,3905,3906],{},"wl-copy",[13,3908,3909],{},"xclip",[13,3911,3912],{},"xsel",") exits non-zero on failure, so its\nsuccess is checked. The fallback — an OSC 52 escape sequence written to the terminal — has no reply\nof any kind, so all the CLI ever learns is that the bytes were written; the terminal may have\nignored them. When OSC 52 is the only method that claimed the copy, ",[113,3915,3916],{},"human mode also prints the\npacket to stdout"," and says so on stderr, so you are never left with neither a clipboard nor a\ndocument. ",[13,3919,3879],{}," stays a plain ",[13,3922,254],{}," in ",[13,3925,57],{},[13,3927,63],{}," consumers should read\n",[13,3930,564],{},", which is always there.",[96,3933,3935],{"id":3934},"wait-1",[13,3936,81],{},[211,3938,3940],{"className":1429,"code":3939,"language":1431,"meta":219,"style":219},"{\n  \"campaign\": { \"id\": 81, \"status\": \"completed\", \"profile\": \"security\",\n                \"slice_count\": 12, \"pending\": 0, \"running\": 0, \"completed\": 11, \"failed\": 1 },\n  \"degraded\": true,\n  \"reason\": \"terminal\",\n  \"waited_seconds\": 312,\n  \"polls\": 21,\n  \"fail_on\": [\"critical\", \"high\"],\n  \"verdict\": {\n    \"status_filter\": \"actionable\",\n    \"matched\": 3,\n    \"truncated\": false,\n    \"findings\": [\n      { \"id\": 501, \"canonical_severity\": \"critical\", \"canonical_title\": \"SQL injection in the payments reader\", \"status\": \"new\", \"primary_file\": \"src\u002Fdb.ts\" },\n      { \"id\": 517, \"canonical_severity\": \"high\", \"canonical_title\": \"Missing authz check on \u002Fadmin\u002Fexport\", \"status\": \"new\", \"primary_file\": \"src\u002Froutes\u002Fadmin.ts\" },\n      { \"id\": 522, \"canonical_severity\": \"high\", \"canonical_title\": \"Reflected XSS in the search page\", \"status\": \"needs_retest\", \"primary_file\": \"web\u002Fapp\u002Fsearch.vue\" }\n    ]\n  },\n  \"summary\": { \"total\": 3, \"open\": 3, \"severe_open\": 3, \"needs_retest\": 0 }\n}\n",[13,3941,3942,3946,4002,4070,4082,4101,4117,4133,4162,4176,4196,4211,4224,4237,4319,4403,4487,4493,4499,4560],{"__ignoreMap":219},[874,3943,3944],{"class":876,"line":877},[874,3945,1438],{"class":902},[874,3947,3948,3950,3952,3954,3956,3958,3960,3962,3964,3966,3968,3970,3972,3974,3976,3978,3980,3982,3984,3986,3988,3990,3992,3994,3996,3998,4000],{"class":876,"line":922},[874,3949,1443],{"class":902},[874,3951,1719],{"class":1446},[874,3953,1449],{"class":902},[874,3955,1452],{"class":902},[874,3957,1591],{"class":902},[874,3959,1474],{"class":902},[874,3961,1596],{"class":880},[874,3963,1449],{"class":902},[874,3965,1452],{"class":902},[874,3967,3114],{"class":1455},[874,3969,1606],{"class":902},[874,3971,1474],{"class":902},[874,3973,1763],{"class":880},[874,3975,1449],{"class":902},[874,3977,1452],{"class":902},[874,3979,1474],{"class":902},[874,3981,2889],{"class":883},[874,3983,1449],{"class":902},[874,3985,1606],{"class":902},[874,3987,1474],{"class":902},[874,3989,1651],{"class":880},[874,3991,1449],{"class":902},[874,3993,1452],{"class":902},[874,3995,1474],{"class":902},[874,3997,481],{"class":883},[874,3999,1449],{"class":902},[874,4001,1459],{"class":902},[874,4003,4004,4007,4010,4012,4014,4016,4018,4020,4023,4025,4027,4029,4031,4033,4036,4038,4040,4042,4044,4046,4048,4050,4052,4055,4057,4059,4062,4064,4066,4068],{"class":876,"line":1462},[874,4005,4006],{"class":902},"                \"",[874,4008,4009],{"class":880},"slice_count",[874,4011,1449],{"class":902},[874,4013,1452],{"class":902},[874,4015,2015],{"class":1455},[874,4017,1606],{"class":902},[874,4019,1474],{"class":902},[874,4021,4022],{"class":880},"pending",[874,4024,1449],{"class":902},[874,4026,1452],{"class":902},[874,4028,1553],{"class":1455},[874,4030,1606],{"class":902},[874,4032,1474],{"class":902},[874,4034,4035],{"class":880},"running",[874,4037,1449],{"class":902},[874,4039,1452],{"class":902},[874,4041,1553],{"class":1455},[874,4043,1606],{"class":902},[874,4045,1474],{"class":902},[874,4047,2889],{"class":880},[874,4049,1449],{"class":902},[874,4051,1452],{"class":902},[874,4053,4054],{"class":1455}," 11",[874,4056,1606],{"class":902},[874,4058,1474],{"class":902},[874,4060,4061],{"class":880},"failed",[874,4063,1449],{"class":902},[874,4065,1452],{"class":902},[874,4067,1456],{"class":1455},[874,4069,1643],{"class":902},[874,4071,4072,4074,4076,4078,4080],{"class":876,"line":1484},[874,4073,1443],{"class":902},[874,4075,1281],{"class":1446},[874,4077,1449],{"class":902},[874,4079,1452],{"class":902},[874,4081,1538],{"class":902},[874,4083,4084,4086,4088,4090,4092,4094,4097,4099],{"class":876,"line":1505},[874,4085,1443],{"class":902},[874,4087,3598],{"class":1446},[874,4089,1449],{"class":902},[874,4091,1452],{"class":902},[874,4093,1474],{"class":902},[874,4095,4096],{"class":883},"terminal",[874,4098,1449],{"class":902},[874,4100,1459],{"class":902},[874,4102,4103,4105,4108,4110,4112,4115],{"class":876,"line":1526},[874,4104,1443],{"class":902},[874,4106,4107],{"class":1446},"waited_seconds",[874,4109,1449],{"class":902},[874,4111,1452],{"class":902},[874,4113,4114],{"class":1455}," 312",[874,4116,1459],{"class":902},[874,4118,4119,4121,4124,4126,4128,4131],{"class":876,"line":1541},[874,4120,1443],{"class":902},[874,4122,4123],{"class":1446},"polls",[874,4125,1449],{"class":902},[874,4127,1452],{"class":902},[874,4129,4130],{"class":1455}," 21",[874,4132,1459],{"class":902},[874,4134,4135,4137,4140,4142,4144,4146,4148,4150,4152,4154,4156,4158,4160],{"class":876,"line":1558},[874,4136,1443],{"class":902},[874,4138,4139],{"class":1446},"fail_on",[874,4141,1449],{"class":902},[874,4143,1452],{"class":902},[874,4145,2045],{"class":902},[874,4147,1449],{"class":902},[874,4149,304],{"class":883},[874,4151,1449],{"class":902},[874,4153,1606],{"class":902},[874,4155,1474],{"class":902},[874,4157,307],{"class":883},[874,4159,1449],{"class":902},[874,4161,2916],{"class":902},[874,4163,4164,4166,4169,4171,4173],{"class":876,"line":1579},[874,4165,1443],{"class":902},[874,4167,4168],{"class":1446},"verdict",[874,4170,1449],{"class":902},[874,4172,1452],{"class":902},[874,4174,4175],{"class":902}," {\n",[874,4177,4178,4181,4184,4186,4188,4190,4192,4194],{"class":876,"line":1646},[874,4179,4180],{"class":902},"    \"",[874,4182,4183],{"class":880},"status_filter",[874,4185,1449],{"class":902},[874,4187,1452],{"class":902},[874,4189,1474],{"class":902},[874,4191,288],{"class":883},[874,4193,1449],{"class":902},[874,4195,1459],{"class":902},[874,4197,4198,4200,4203,4205,4207,4209],{"class":876,"line":1666},[874,4199,4180],{"class":902},[874,4201,4202],{"class":880},"matched",[874,4204,1449],{"class":902},[874,4206,1452],{"class":902},[874,4208,2029],{"class":1455},[874,4210,1459],{"class":902},[874,4212,4213,4215,4217,4219,4221],{"class":876,"line":1686},[874,4214,4180],{"class":902},[874,4216,1940],{"class":880},[874,4218,1449],{"class":902},[874,4220,1452],{"class":902},[874,4222,4223],{"class":902}," false,\n",[874,4225,4226,4228,4230,4232,4234],{"class":876,"line":3013},[874,4227,4180],{"class":902},[874,4229,2038],{"class":880},[874,4231,1449],{"class":902},[874,4233,1452],{"class":902},[874,4235,4236],{"class":902}," [\n",[874,4238,4239,4242,4244,4246,4248,4250,4252,4254,4256,4258,4260,4262,4264,4266,4268,4270,4272,4274,4276,4278,4280,4283,4285,4287,4289,4291,4293,4295,4297,4299,4301,4303,4305,4307,4309,4311,4313,4315,4317],{"class":876,"line":3050},[874,4240,4241],{"class":902},"      {",[874,4243,1474],{"class":902},[874,4245,1596],{"class":1455},[874,4247,1449],{"class":902},[874,4249,1452],{"class":902},[874,4251,2058],{"class":1455},[874,4253,1606],{"class":902},[874,4255,1474],{"class":902},[874,4257,2185],{"class":1455},[874,4259,1449],{"class":902},[874,4261,1452],{"class":902},[874,4263,1474],{"class":902},[874,4265,304],{"class":883},[874,4267,1449],{"class":902},[874,4269,1606],{"class":902},[874,4271,1474],{"class":902},[874,4273,2174],{"class":1455},[874,4275,1449],{"class":902},[874,4277,1452],{"class":902},[874,4279,1474],{"class":902},[874,4281,4282],{"class":883},"SQL injection in the payments reader",[874,4284,1449],{"class":902},[874,4286,1606],{"class":902},[874,4288,1474],{"class":902},[874,4290,1763],{"class":1455},[874,4292,1449],{"class":902},[874,4294,1452],{"class":902},[874,4296,1474],{"class":902},[874,4298,3278],{"class":883},[874,4300,1449],{"class":902},[874,4302,1606],{"class":902},[874,4304,1474],{"class":902},[874,4306,2245],{"class":1455},[874,4308,1449],{"class":902},[874,4310,1452],{"class":902},[874,4312,1474],{"class":902},[874,4314,2967],{"class":883},[874,4316,1449],{"class":902},[874,4318,1643],{"class":902},[874,4320,4322,4324,4326,4328,4330,4332,4335,4337,4339,4341,4343,4345,4347,4349,4351,4353,4355,4357,4359,4361,4363,4366,4368,4370,4372,4374,4376,4378,4380,4382,4384,4386,4388,4390,4392,4394,4396,4399,4401],{"class":876,"line":4321},15,[874,4323,4241],{"class":902},[874,4325,1474],{"class":902},[874,4327,1596],{"class":1455},[874,4329,1449],{"class":902},[874,4331,1452],{"class":902},[874,4333,4334],{"class":1455}," 517",[874,4336,1606],{"class":902},[874,4338,1474],{"class":902},[874,4340,2185],{"class":1455},[874,4342,1449],{"class":902},[874,4344,1452],{"class":902},[874,4346,1474],{"class":902},[874,4348,307],{"class":883},[874,4350,1449],{"class":902},[874,4352,1606],{"class":902},[874,4354,1474],{"class":902},[874,4356,2174],{"class":1455},[874,4358,1449],{"class":902},[874,4360,1452],{"class":902},[874,4362,1474],{"class":902},[874,4364,4365],{"class":883},"Missing authz check on \u002Fadmin\u002Fexport",[874,4367,1449],{"class":902},[874,4369,1606],{"class":902},[874,4371,1474],{"class":902},[874,4373,1763],{"class":1455},[874,4375,1449],{"class":902},[874,4377,1452],{"class":902},[874,4379,1474],{"class":902},[874,4381,3278],{"class":883},[874,4383,1449],{"class":902},[874,4385,1606],{"class":902},[874,4387,1474],{"class":902},[874,4389,2245],{"class":1455},[874,4391,1449],{"class":902},[874,4393,1452],{"class":902},[874,4395,1474],{"class":902},[874,4397,4398],{"class":883},"src\u002Froutes\u002Fadmin.ts",[874,4400,1449],{"class":902},[874,4402,1643],{"class":902},[874,4404,4406,4408,4410,4412,4414,4416,4419,4421,4423,4425,4427,4429,4431,4433,4435,4437,4439,4441,4443,4445,4447,4450,4452,4454,4456,4458,4460,4462,4464,4466,4468,4470,4472,4474,4476,4478,4480,4483,4485],{"class":876,"line":4405},16,[874,4407,4241],{"class":902},[874,4409,1474],{"class":902},[874,4411,1596],{"class":1455},[874,4413,1449],{"class":902},[874,4415,1452],{"class":902},[874,4417,4418],{"class":1455}," 522",[874,4420,1606],{"class":902},[874,4422,1474],{"class":902},[874,4424,2185],{"class":1455},[874,4426,1449],{"class":902},[874,4428,1452],{"class":902},[874,4430,1474],{"class":902},[874,4432,307],{"class":883},[874,4434,1449],{"class":902},[874,4436,1606],{"class":902},[874,4438,1474],{"class":902},[874,4440,2174],{"class":1455},[874,4442,1449],{"class":902},[874,4444,1452],{"class":902},[874,4446,1474],{"class":902},[874,4448,4449],{"class":883},"Reflected XSS in the search page",[874,4451,1449],{"class":902},[874,4453,1606],{"class":902},[874,4455,1474],{"class":902},[874,4457,1763],{"class":1455},[874,4459,1449],{"class":902},[874,4461,1452],{"class":902},[874,4463,1474],{"class":902},[874,4465,2022],{"class":883},[874,4467,1449],{"class":902},[874,4469,1606],{"class":902},[874,4471,1474],{"class":902},[874,4473,2245],{"class":1455},[874,4475,1449],{"class":902},[874,4477,1452],{"class":902},[874,4479,1474],{"class":902},[874,4481,4482],{"class":883},"web\u002Fapp\u002Fsearch.vue",[874,4484,1449],{"class":902},[874,4486,3206],{"class":902},[874,4488,4490],{"class":876,"line":4489},17,[874,4491,4492],{"class":902},"    ]\n",[874,4494,4496],{"class":876,"line":4495},18,[874,4497,4498],{"class":902},"  },\n",[874,4500,4502,4504,4506,4508,4510,4512,4514,4516,4518,4520,4522,4524,4526,4528,4530,4532,4534,4536,4538,4540,4542,4544,4546,4548,4550,4552,4554,4556,4558],{"class":876,"line":4501},19,[874,4503,1443],{"class":902},[874,4505,1972],{"class":1446},[874,4507,1449],{"class":902},[874,4509,1452],{"class":902},[874,4511,1591],{"class":902},[874,4513,1474],{"class":902},[874,4515,1923],{"class":880},[874,4517,1449],{"class":902},[874,4519,1452],{"class":902},[874,4521,2029],{"class":1455},[874,4523,1606],{"class":902},[874,4525,1474],{"class":902},[874,4527,281],{"class":880},[874,4529,1449],{"class":902},[874,4531,1452],{"class":902},[874,4533,2029],{"class":1455},[874,4535,1606],{"class":902},[874,4537,1474],{"class":902},[874,4539,2008],{"class":880},[874,4541,1449],{"class":902},[874,4543,1452],{"class":902},[874,4545,2029],{"class":1455},[874,4547,1606],{"class":902},[874,4549,1474],{"class":902},[874,4551,2022],{"class":880},[874,4553,1449],{"class":902},[874,4555,1452],{"class":902},[874,4557,1553],{"class":1455},[874,4559,3206],{"class":902},[874,4561,4563],{"class":876,"line":4562},20,[874,4564,1689],{"class":902},[10,4566,4567,1713,4569,282,4571,485,4574,579,4577,1713,4580,4582,4583,4585,4586,4588,4589,4591,4592,1713,4594,4596,4597,134],{},[13,4568,3598],{},[13,4570,4096],{},[13,4572,4573],{},"timeout",[13,4575,4576],{},"interrupted",[13,4578,4579],{},"verdict.status_filter",[13,4581,2101],{},"\nwhenever the verdict query ran — the one predicate ",[13,4584,57],{}," uses — and ",[13,4587,119],{}," when it did\nnot, so the envelope states which predicate produced ",[13,4590,4202],{}," rather than leaving a consumer to\nassume it is the dashboard's open count. ",[13,4593,4139],{},[13,4595,127],{}," when the verdict was disabled with\n",[13,4598,668],{},[831,4600,4601,4607,4608,4611,4612,1713,4614,2122,4616,78,4619,3222,4621,4623,4624,3920,4626,4628,4629,4632,4633,4635,4636,4638],{},[113,4602,4603,4604,4606],{},"Branch on ",[13,4605,3598],{}," before trusting any counter."," When the loop stops before the campaign is\nterminal — a timeout or an interrupt, possibly before the very first poll returned — nothing was\ncounted, so every ",[13,4609,4610],{},"campaign.*"," field except ",[13,4613,1596],{},[13,4615,119],{},[13,4617,4618],{},"verdict.*",[13,4620,2346],{},[13,4622,119],{}," as described below. ",[13,4625,1281],{},[13,4627,259],{}," on that path: it means \"nothing is\n",[143,4630,4631],{},"known"," to have failed\", not \"nothing failed\". A ",[13,4634,119],{}," means unqueried; a ",[13,4637,527],{}," means counted and\ngenuinely zero.",[10,4640,4641,4644,4645,4648,4649,4651,4652,4655,4656,4659,4660,1713,4663,4666,4667,4669,4670,4672,4673,4675,4676,4678,4679,4681],{},[13,4642,4643],{},"verdict.findings"," carries ",[113,4646,4647],{},"up to 20"," projected rows in the full ",[13,4650,1477],{}," record shape\ndocumented above — each element in the example is abbreviated, but the real document carries every\nkey of that table. ",[13,4653,4654],{},"verdict.matched"," is the ",[143,4657,4658],{},"complete"," count of matching findings, and\n",[13,4661,4662],{},"verdict.truncated",[13,4664,4665],{},"true"," exactly when ",[13,4668,4202],{}," exceeds the 20-row cap, i.e. when\n",[13,4671,4643],{}," does not list everything ",[13,4674,4202],{}," counted. The array is never ",[13,4677,119],{},"; it is ",[13,4680,127],{},"\nwhen nothing matched.",[10,4683,4684,4692,4693,1713,4695,690,4697,4699,4700,4702,4703,282,4705,282,4707,4709,4710,2457,4712,2122,4714,1713,4716,4718,4719,4721],{},[113,4685,4686,4687,4689,4690,134],{},"The verdict query only runs on a terminal campaign, and unobtained numbers are ",[13,4688,119],{},", not ",[13,4691,527],{},"\nWhen ",[13,4694,3598],{},[13,4696,4573],{},[13,4698,4576],{},", or when ",[13,4701,668],{}," disabled the verdict, no\nverdict query was ever issued — so ",[13,4704,4579],{},[13,4706,4654],{},[13,4708,4662],{},"\nand every field of ",[13,4711,1972],{},[13,4713,119],{},[13,4715,4643],{},[13,4717,127],{},". A zero in those fields\nalways means \"counted, and it was zero\". Branch on ",[13,4720,3598],{}," (or the exit code) before you read them.",[96,4723,4725],{"id":4724},"error-envelope","Error envelope",[10,4727,4728,4729,4732,4733,4736,4737,4739],{},"Emitted on every non-zero terminating path the command itself reaches — including transport and\n",[113,4730,4731],{},"auth"," failure (an unreadable or malformed auth store is an ",[13,4734,4735],{},"operational"," envelope with exit ",[13,4738,1191],{},",\nnot a bare stderr line).",[10,4741,4742,4748,4749,428,4752,428,4754,4756,4757,4760,4761,4763,4764,4767,4768,4770],{},[113,4743,4744,4745,4747],{},"Exit ",[13,4746,1073],{}," is the one exception."," Argument parsing happens in clap, before the command body runs:\nan unknown flag, a missing value, or a value your ",[13,4750,4751],{},"--severity",[13,4753,342],{},[13,4755,1031],{}," list\nrejects makes clap print usage text to ",[113,4758,4759],{},"stderr"," and exit ",[13,4762,1073],{}," with ",[113,4765,4766],{},"zero bytes on stdout",". There\nis no JSON document to parse. Branch on ",[13,4769,1073],{}," before you read stdout:",[211,4772,4774],{"className":868,"code":4773,"language":870,"meta":219,"style":219},"thespider-agent findings list --severity bogus --json > out.json; rc=$?\ncase \"$rc\" in\n  0) jq '.pagination.total' out.json ;;\n  2) echo \"bad arguments (usage text is on stderr; out.json is empty)\" >&2; exit 2 ;;\n  *) jq -r '.error.message' out.json >&2; exit \"$rc\" ;;\nesac\n",[13,4775,4776,4810,4826,4846,4875,4906],{"__ignoreMap":219},[874,4777,4778,4780,4782,4784,4786,4789,4791,4794,4797,4800,4804,4807],{"class":876,"line":877},[874,4779,15],{"class":880},[874,4781,884],{"class":883},[874,4783,887],{"class":883},[874,4785,893],{"class":883},[874,4787,4788],{"class":883}," bogus",[874,4790,899],{"class":883},[874,4792,4793],{"class":902}," >",[874,4795,4796],{"class":883}," out.json",[874,4798,4799],{"class":902},";",[874,4801,4803],{"class":4802},"sTEyZ"," rc",[874,4805,4806],{"class":902},"=",[874,4808,4809],{"class":4802},"$?\n",[874,4811,4812,4816,4818,4821,4823],{"class":876,"line":922},[874,4813,4815],{"class":4814},"s7zQu","case",[874,4817,1474],{"class":902},[874,4819,4820],{"class":4802},"$rc",[874,4822,1449],{"class":902},[874,4824,4825],{"class":4814}," in\n",[874,4827,4828,4831,4833,4835,4837,4839,4841,4843],{"class":876,"line":1462},[874,4829,4830],{"class":883},"  0",[874,4832,755],{"class":902},[874,4834,906],{"class":880},[874,4836,909],{"class":902},[874,4838,912],{"class":883},[874,4840,915],{"class":902},[874,4842,4796],{"class":883},[874,4844,4845],{"class":902}," ;;\n",[874,4847,4848,4851,4853,4857,4859,4862,4864,4867,4870,4873],{"class":876,"line":1484},[874,4849,4850],{"class":883},"  2",[874,4852,755],{"class":902},[874,4854,4856],{"class":4855},"s2Zo4"," echo",[874,4858,1474],{"class":902},[874,4860,4861],{"class":883},"bad arguments (usage text is on stderr; out.json is empty)",[874,4863,1449],{"class":902},[874,4865,4866],{"class":902}," >&2;",[874,4868,4869],{"class":4855}," exit",[874,4871,4872],{"class":1455}," 2",[874,4874,4845],{"class":902},[874,4876,4877,4880,4882,4885,4887,4890,4892,4894,4896,4898,4900,4902,4904],{"class":876,"line":1505},[874,4878,4879],{"class":902},"  *)",[874,4881,906],{"class":880},[874,4883,4884],{"class":883}," -r",[874,4886,909],{"class":902},[874,4888,4889],{"class":883},".error.message",[874,4891,915],{"class":902},[874,4893,4796],{"class":883},[874,4895,4866],{"class":902},[874,4897,4869],{"class":4855},[874,4899,1474],{"class":902},[874,4901,4820],{"class":4802},[874,4903,1449],{"class":902},[874,4905,4845],{"class":902},[874,4907,4908],{"class":876,"line":1526},[874,4909,4910],{"class":4814},"esac\n",[211,4912,4914],{"className":1429,"code":4913,"language":1431,"meta":219,"style":219},"{\n  \"schemaVersion\": 1,\n  \"command\": \"wait\",\n  \"generatedAt\": \"2026-07-28T14:03:11Z\",\n  \"agentVersion\": \"0.2.3\",\n  \"ok\": false,\n  \"exitCode\": 6,\n  \"error\": { \"kind\": \"operational\", \"code\": \"invalid_token\",\n             \"httpStatus\": 401, \"message\": \"HTTP 401: invalid_token\" }\n}\n",[13,4915,4916,4920,4934,4952,4970,4988,5000,5015,5062,5097],{"__ignoreMap":219},[874,4917,4918],{"class":876,"line":877},[874,4919,1438],{"class":902},[874,4921,4922,4924,4926,4928,4930,4932],{"class":876,"line":922},[874,4923,1443],{"class":902},[874,4925,101],{"class":1446},[874,4927,1449],{"class":902},[874,4929,1452],{"class":902},[874,4931,1456],{"class":1455},[874,4933,1459],{"class":902},[874,4935,4936,4938,4940,4942,4944,4946,4948,4950],{"class":876,"line":1462},[874,4937,1443],{"class":902},[874,4939,1467],{"class":1446},[874,4941,1449],{"class":902},[874,4943,1452],{"class":902},[874,4945,1474],{"class":902},[874,4947,81],{"class":883},[874,4949,1449],{"class":902},[874,4951,1459],{"class":902},[874,4953,4954,4956,4958,4960,4962,4964,4966,4968],{"class":876,"line":1484},[874,4955,1443],{"class":902},[874,4957,1489],{"class":1446},[874,4959,1449],{"class":902},[874,4961,1452],{"class":902},[874,4963,1474],{"class":902},[874,4965,1498],{"class":883},[874,4967,1449],{"class":902},[874,4969,1459],{"class":902},[874,4971,4972,4974,4976,4978,4980,4982,4984,4986],{"class":876,"line":1505},[874,4973,1443],{"class":902},[874,4975,1510],{"class":1446},[874,4977,1449],{"class":902},[874,4979,1452],{"class":902},[874,4981,1474],{"class":902},[874,4983,1519],{"class":883},[874,4985,1449],{"class":902},[874,4987,1459],{"class":902},[874,4989,4990,4992,4994,4996,4998],{"class":876,"line":1526},[874,4991,1443],{"class":902},[874,4993,1531],{"class":1446},[874,4995,1449],{"class":902},[874,4997,1452],{"class":902},[874,4999,4223],{"class":902},[874,5001,5002,5004,5006,5008,5010,5013],{"class":876,"line":1541},[874,5003,1443],{"class":902},[874,5005,1546],{"class":1446},[874,5007,1449],{"class":902},[874,5009,1452],{"class":902},[874,5011,5012],{"class":1455}," 6",[874,5014,1459],{"class":902},[874,5016,5017,5019,5022,5024,5026,5028,5030,5033,5035,5037,5039,5041,5043,5045,5047,5049,5051,5053,5055,5058,5060],{"class":876,"line":1558},[874,5018,1443],{"class":902},[874,5020,5021],{"class":1446},"error",[874,5023,1449],{"class":902},[874,5025,1452],{"class":902},[874,5027,1591],{"class":902},[874,5029,1474],{"class":902},[874,5031,5032],{"class":880},"kind",[874,5034,1449],{"class":902},[874,5036,1452],{"class":902},[874,5038,1474],{"class":902},[874,5040,4735],{"class":883},[874,5042,1449],{"class":902},[874,5044,1606],{"class":902},[874,5046,1474],{"class":902},[874,5048,13],{"class":880},[874,5050,1449],{"class":902},[874,5052,1452],{"class":902},[874,5054,1474],{"class":902},[874,5056,5057],{"class":883},"invalid_token",[874,5059,1449],{"class":902},[874,5061,1459],{"class":902},[874,5063,5064,5067,5070,5072,5074,5077,5079,5081,5084,5086,5088,5090,5093,5095],{"class":876,"line":1579},[874,5065,5066],{"class":902},"             \"",[874,5068,5069],{"class":880},"httpStatus",[874,5071,1449],{"class":902},[874,5073,1452],{"class":902},[874,5075,5076],{"class":1455}," 401",[874,5078,1606],{"class":902},[874,5080,1474],{"class":902},[874,5082,5083],{"class":880},"message",[874,5085,1449],{"class":902},[874,5087,1452],{"class":902},[874,5089,1474],{"class":902},[874,5091,5092],{"class":883},"HTTP 401: invalid_token",[874,5094,1449],{"class":902},[874,5096,3206],{"class":902},[874,5098,5099],{"class":876,"line":1646},[874,5100,1689],{"class":902},[10,5102,5103,1713,5106,690,5109,579,5111,5114,5115,282,5118,282,5121,1459,5124,282,5127,1459,5130,282,5133,282,5136,282,5138,485,5140,134],{},[13,5104,5105],{},"error.kind",[13,5107,5108],{},"usage",[13,5110,4735],{},[13,5112,5113],{},"error.code"," is the server's error code, or one of the\nCLI-originated codes ",[13,5116,5117],{},"auth_store_unreadable",[13,5119,5120],{},"missing_project_config",[13,5122,5123],{},"invalid_limit",[13,5125,5126],{},"reason_required_for_false_positive",[13,5128,5129],{},"commit_requires_fixed_status",[13,5131,5132],{},"merged_finding_not_triageable",[13,5134,5135],{},"export_too_large",[13,5137,4576],{},[13,5139,4573],{},[13,5141,119],{},[10,5143,5144,5146,5147,5150,5151,5154,5155,5157],{},[13,5145,5117],{}," is the code behind the auth-failure guarantee above: an ",[13,5148,5149],{},"auth.toml"," that is\nmissing, unreadable, or malformed produces this envelope with ",[13,5152,5153],{},"exitCode: 6",", rather than the bare\nexit ",[13,5156,1038],{}," an unhandled error would give.",[10,5159,5160,282,5162,5164,5165,5168,5169,282,5171,282,5173,282,5175,282,5177,282,5179,2511,5181,134],{},[13,5161,1584],{},[13,5163,1651],{},", and the payload keys are ",[113,5166,5167],{},"omitted"," on the error envelope when they could not\nbe resolved. This is the single documented exception to \"keys are never omitted\": the error envelope\nguarantees only ",[13,5170,101],{},[13,5172,1467],{},[13,5174,1489],{},[13,5176,1510],{},[13,5178,1531],{},[13,5180,1546],{},[13,5182,5021],{},[96,5184,5186],{"id":5185},"worked-examples","Worked examples",[211,5188,5190],{"className":868,"code":5189,"language":870,"meta":219,"style":219},"# The AC1 one-liner: open high-severity findings as JSON, no web UI.\nthespider-agent findings list --open --severity critical,high --json | jq '.pagination.total'\n\n# The agent work queue, with ids.\nthespider-agent findings list --actionable --severity critical,high --json | jq -r '.findings[].id'\n\n# Did we see everything, or is the page truncated?\nthespider-agent findings list --json | jq '.pagination | {returned, total, truncated}'\n\n# Block on a campaign, then branch on the documented exit code.\nthespider-agent wait --campaign 81 --json > wait.json; rc=$?\ncase \"$rc\" in\n  0) echo \"clean\" ;;\n  1) jq -r '.verdict.findings[].canonical_title' wait.json ;;\n  2) echo \"bad arguments; usage text is on stderr and wait.json is empty\" >&2; exit 2 ;;\n  3) echo \"timed out; still running\" ;;\n  4) echo \"degraded: $(jq '.campaign.failed' wait.json) slice(s) failed\" ;;\n  *) jq -r '.error.message' wait.json >&2; exit \"$rc\" ;;\nesac\n",[13,5191,5192,5197,5224,5230,5235,5264,5268,5273,5294,5298,5303,5330,5342,5359,5381,5404,5422,5460,5488],{"__ignoreMap":219},[874,5193,5194],{"class":876,"line":877},[874,5195,5196],{"class":918},"# The AC1 one-liner: open high-severity findings as JSON, no web UI.\n",[874,5198,5199,5201,5203,5205,5207,5209,5211,5213,5215,5217,5219,5221],{"class":876,"line":922},[874,5200,15],{"class":880},[874,5202,884],{"class":883},[874,5204,887],{"class":883},[874,5206,931],{"class":883},[874,5208,893],{"class":883},[874,5210,896],{"class":883},[874,5212,899],{"class":883},[874,5214,903],{"class":902},[874,5216,906],{"class":880},[874,5218,909],{"class":902},[874,5220,912],{"class":883},[874,5222,5223],{"class":902},"'\n",[874,5225,5226],{"class":876,"line":1462},[874,5227,5229],{"emptyLinePlaceholder":5228},true,"\n",[874,5231,5232],{"class":876,"line":1484},[874,5233,5234],{"class":918},"# The agent work queue, with ids.\n",[874,5236,5237,5239,5241,5243,5245,5247,5249,5251,5253,5255,5257,5259,5262],{"class":876,"line":1505},[874,5238,15],{"class":880},[874,5240,884],{"class":883},[874,5242,887],{"class":883},[874,5244,890],{"class":883},[874,5246,893],{"class":883},[874,5248,896],{"class":883},[874,5250,899],{"class":883},[874,5252,903],{"class":902},[874,5254,906],{"class":880},[874,5256,4884],{"class":883},[874,5258,909],{"class":902},[874,5260,5261],{"class":883},".findings[].id",[874,5263,5223],{"class":902},[874,5265,5266],{"class":876,"line":1526},[874,5267,5229],{"emptyLinePlaceholder":5228},[874,5269,5270],{"class":876,"line":1541},[874,5271,5272],{"class":918},"# Did we see everything, or is the page truncated?\n",[874,5274,5275,5277,5279,5281,5283,5285,5287,5289,5292],{"class":876,"line":1558},[874,5276,15],{"class":880},[874,5278,884],{"class":883},[874,5280,887],{"class":883},[874,5282,899],{"class":883},[874,5284,903],{"class":902},[874,5286,906],{"class":880},[874,5288,909],{"class":902},[874,5290,5291],{"class":883},".pagination | {returned, total, truncated}",[874,5293,5223],{"class":902},[874,5295,5296],{"class":876,"line":1579},[874,5297,5229],{"emptyLinePlaceholder":5228},[874,5299,5300],{"class":876,"line":1646},[874,5301,5302],{"class":918},"# Block on a campaign, then branch on the documented exit code.\n",[874,5304,5305,5307,5310,5313,5315,5317,5319,5322,5324,5326,5328],{"class":876,"line":1666},[874,5306,15],{"class":880},[874,5308,5309],{"class":883}," wait",[874,5311,5312],{"class":883}," --campaign",[874,5314,3114],{"class":1455},[874,5316,899],{"class":883},[874,5318,4793],{"class":902},[874,5320,5321],{"class":883}," wait.json",[874,5323,4799],{"class":902},[874,5325,4803],{"class":4802},[874,5327,4806],{"class":902},[874,5329,4809],{"class":4802},[874,5331,5332,5334,5336,5338,5340],{"class":876,"line":1686},[874,5333,4815],{"class":4814},[874,5335,1474],{"class":902},[874,5337,4820],{"class":4802},[874,5339,1449],{"class":902},[874,5341,4825],{"class":4814},[874,5343,5344,5346,5348,5350,5352,5355,5357],{"class":876,"line":3013},[874,5345,4830],{"class":883},[874,5347,755],{"class":902},[874,5349,4856],{"class":4855},[874,5351,1474],{"class":902},[874,5353,5354],{"class":883},"clean",[874,5356,1449],{"class":902},[874,5358,4845],{"class":902},[874,5360,5361,5364,5366,5368,5370,5372,5375,5377,5379],{"class":876,"line":3050},[874,5362,5363],{"class":883},"  1",[874,5365,755],{"class":902},[874,5367,906],{"class":880},[874,5369,4884],{"class":883},[874,5371,909],{"class":902},[874,5373,5374],{"class":883},".verdict.findings[].canonical_title",[874,5376,915],{"class":902},[874,5378,5321],{"class":883},[874,5380,4845],{"class":902},[874,5382,5383,5385,5387,5389,5391,5394,5396,5398,5400,5402],{"class":876,"line":4321},[874,5384,4850],{"class":883},[874,5386,755],{"class":902},[874,5388,4856],{"class":4855},[874,5390,1474],{"class":902},[874,5392,5393],{"class":883},"bad arguments; usage text is on stderr and wait.json is empty",[874,5395,1449],{"class":902},[874,5397,4866],{"class":902},[874,5399,4869],{"class":4855},[874,5401,4872],{"class":1455},[874,5403,4845],{"class":902},[874,5405,5406,5409,5411,5413,5415,5418,5420],{"class":876,"line":4405},[874,5407,5408],{"class":883},"  3",[874,5410,755],{"class":902},[874,5412,4856],{"class":4855},[874,5414,1474],{"class":902},[874,5416,5417],{"class":883},"timed out; still running",[874,5419,1449],{"class":902},[874,5421,4845],{"class":902},[874,5423,5424,5427,5429,5431,5433,5436,5439,5442,5444,5447,5449,5451,5453,5456,5458],{"class":876,"line":4489},[874,5425,5426],{"class":883},"  4",[874,5428,755],{"class":902},[874,5430,4856],{"class":4855},[874,5432,1474],{"class":902},[874,5434,5435],{"class":883},"degraded: ",[874,5437,5438],{"class":902},"$(",[874,5440,5441],{"class":880},"jq",[874,5443,909],{"class":902},[874,5445,5446],{"class":883},".campaign.failed",[874,5448,915],{"class":902},[874,5450,5321],{"class":883},[874,5452,755],{"class":902},[874,5454,5455],{"class":883}," slice(s) failed",[874,5457,1449],{"class":902},[874,5459,4845],{"class":902},[874,5461,5462,5464,5466,5468,5470,5472,5474,5476,5478,5480,5482,5484,5486],{"class":876,"line":4495},[874,5463,4879],{"class":902},[874,5465,906],{"class":880},[874,5467,4884],{"class":883},[874,5469,909],{"class":902},[874,5471,4889],{"class":883},[874,5473,915],{"class":902},[874,5475,5321],{"class":883},[874,5477,4866],{"class":902},[874,5479,4869],{"class":4855},[874,5481,1474],{"class":902},[874,5483,4820],{"class":4802},[874,5485,1449],{"class":902},[874,5487,4845],{"class":902},[874,5489,5490],{"class":876,"line":4501},[874,5491,4910],{"class":4814},[18,5493,86],{"id":5494},"markdown-packet",[10,5496,5497,5500,5501,5504],{},[13,5498,5499],{},"findings packet \u003CID>"," writes a version-marked markdown document to stdout; ",[13,5502,5503],{},"findings copy \u003CID>","\nputs the same document on the system clipboard. It is rendered client-side from the finding detail\nendpoint — there is no packet endpoint — and the renderer version is pinned to the binary version.",[96,5506,5508],{"id":5507},"front-matter","Front matter",[211,5510,5514],{"className":5511,"code":5512,"language":5513,"meta":219,"style":219},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\nthespider_packet: 1\nfinding_id: 501\nfingerprint: \"sha256:…\"\nproject: \"acme\u002Fpayments-api\"\nproject_id: 42\nprofile: \"security\"\nstatus: \"new\"\nseverity: \"high\"\nmerged_into_finding_id: null\nredacted: false\ngenerated_by: \"thespider-agent\u002F0.2.3\"\ngenerated_at: \"2026-07-28T14:03:11Z\"\nserver: \"https:\u002F\u002Fthespider.xyz\"\nweb_url: \"https:\u002F\u002Fthespider.xyz\u002Fprojects\u002F42\u002Ffindings?finding=501\"\n---\n","markdown",[13,5515,5516,5521,5526,5531,5536,5541,5546,5551,5556,5561,5566,5571,5576,5581,5586,5591],{"__ignoreMap":219},[874,5517,5518],{"class":876,"line":877},[874,5519,5520],{},"---\n",[874,5522,5523],{"class":876,"line":922},[874,5524,5525],{},"thespider_packet: 1\n",[874,5527,5528],{"class":876,"line":1462},[874,5529,5530],{},"finding_id: 501\n",[874,5532,5533],{"class":876,"line":1484},[874,5534,5535],{},"fingerprint: \"sha256:…\"\n",[874,5537,5538],{"class":876,"line":1505},[874,5539,5540],{},"project: \"acme\u002Fpayments-api\"\n",[874,5542,5543],{"class":876,"line":1526},[874,5544,5545],{},"project_id: 42\n",[874,5547,5548],{"class":876,"line":1541},[874,5549,5550],{},"profile: \"security\"\n",[874,5552,5553],{"class":876,"line":1558},[874,5554,5555],{},"status: \"new\"\n",[874,5557,5558],{"class":876,"line":1579},[874,5559,5560],{},"severity: \"high\"\n",[874,5562,5563],{"class":876,"line":1646},[874,5564,5565],{},"merged_into_finding_id: null\n",[874,5567,5568],{"class":876,"line":1666},[874,5569,5570],{},"redacted: false\n",[874,5572,5573],{"class":876,"line":1686},[874,5574,5575],{},"generated_by: \"thespider-agent\u002F0.2.3\"\n",[874,5577,5578],{"class":876,"line":3013},[874,5579,5580],{},"generated_at: \"2026-07-28T14:03:11Z\"\n",[874,5582,5583],{"class":876,"line":3050},[874,5584,5585],{},"server: \"https:\u002F\u002Fthespider.xyz\"\n",[874,5587,5588],{"class":876,"line":4321},[874,5589,5590],{},"web_url: \"https:\u002F\u002Fthespider.xyz\u002Fprojects\u002F42\u002Ffindings?finding=501\"\n",[874,5592,5593],{"class":876,"line":4405},[874,5594,5520],{},[10,5596,5597],{},"Keys are fixed, always present, in this order. Values are emitted as JSON scalars so model-authored\ntext cannot break the block.",[96,5599,5601],{"id":5600},"ordered-heading-list","Ordered heading list",[10,5603,5604,5605,5608,5609,5612],{},"Every heading is emitted ",[113,5606,5607],{},"unconditionally and in this exact order",". A section with no content\nrenders ",[13,5610,5611],{},"_none_",", so a consumer can rely on the heading set rather than on presence.",[26,5614,5615,5628],{},[29,5616,5617],{},[32,5618,5619,5622,5625],{},[35,5620,5621],{},"#",[35,5623,5624],{},"Heading",[35,5626,5627],{},"Contents",[45,5629,5630,5642,5656,5671,5687,5703,5718,5729,5740,5752,5770,5783],{},[32,5631,5632,5634,5639],{},[50,5633,1038],{},[50,5635,5636],{},[13,5637,5638],{},"# {canonical_title}",[50,5640,5641],{},"the finding title",[32,5643,5644,5646,5651],{},[50,5645,1073],{},[50,5647,5648],{},[13,5649,5650],{},"## Identity",[50,5652,5653,5654],{},"finding id, fingerprint, project, profile, bucket, status, severity, first\u002Flast seen commit and branch, report count, ",[13,5655,2331],{},[32,5657,5658,5660,5665],{},[50,5659,1110],{},[50,5661,5662],{},[13,5663,5664],{},"## Merge status",[50,5666,5667,5670],{},[13,5668,5669],{},"_not merged_",", or the canonical id to triage instead",[32,5672,5673,5675,5680],{},[50,5674,693],{},[50,5676,5677],{},[13,5678,5679],{},"## Location",[50,5681,5682,5683,5686],{},"primary file, then a deduplicated ",[13,5684,5685],{},"(path, line)","-sorted list of every citation",[32,5688,5689,5691,5696],{},[50,5690,1165],{},[50,5692,5693],{},[13,5694,5695],{},"## Reports",[50,5697,5698,5699,5702],{},"one row per report in ",[13,5700,5701],{},"r.id"," order",[32,5704,5705,5707,5712],{},[50,5706,1191],{},[50,5708,5709],{},[13,5710,5711],{},"## Evidence",[50,5713,5714,5715,5717],{},"per-report blocks, ",[13,5716,5701],{}," ascending",[32,5719,5720,5722,5727],{},[50,5721,1222],{},[50,5723,5724],{},[13,5725,5726],{},"## Exploit scenario",[50,5728,2353],{},[32,5730,5731,5733,5738],{},[50,5732,1245],{},[50,5734,5735],{},[13,5736,5737],{},"## Impact",[50,5739,2353],{},[32,5741,5742,5745,5750],{},[50,5743,5744],{},"9",[50,5746,5747],{},[13,5748,5749],{},"## Recommendation",[50,5751,2353],{},[32,5753,5754,5757,5762],{},[50,5755,5756],{},"10",[50,5758,5759],{},[13,5760,5761],{},"## Bug details",[50,5763,5764,5765,3072,5767,5769],{},"the five bug fields; ",[13,5766,5611],{},[13,5768,481],{}," profile",[32,5771,5772,5775,5780],{},[50,5773,5774],{},"11",[50,5776,5777],{},[13,5778,5779],{},"## Sightings",[50,5781,5782],{},"campaign, profile, branch, commit, first\u002Flast seen",[32,5784,5785,5788,5793],{},[50,5786,5787],{},"12",[50,5789,5790],{},[13,5791,5792],{},"## Triage history",[50,5794,5795],{},"from → to, decider, actor, notes, timestamp",[10,5797,5798,5799,5802,5803,5806,5807,5809],{},"Reports appear in ascending report id — the order the server returns — and are never re-sorted\nclient-side. A file with ",[13,5800,5801],{},"line: null"," renders as a bare path; a file with a line renders\n",[13,5804,5805],{},"path:line",", so a real line ",[13,5808,527],{}," is never confused with \"no line\".",[10,5811,5812,5813,5816],{},"Model-authored text is treated as hostile. Inside a free-text block, three kinds of line are\nbackslash-escaped, because each of them can change the heading set a markdown ",[113,5814,5815],{},"parser"," sees:",[2381,5818,5819,5833,5836],{},[1328,5820,5821,5822,282,5825,5828,5829,5832],{},"a level-1 or level-2 ATX heading (",[13,5823,5824],{},"# …",[13,5826,5827],{},"## …",") — it would forge a section boundary. Level 3 and\nbelow are left intact, so a model's ",[13,5830,5831],{},"### Details"," still renders as a subheading;",[1328,5834,5835],{},"a fenced-code opener (three or more backticks or tildes) — the packet emits no fences of its own,\nso a single unbalanced one would leave a fence open for the rest of the document and every later\nheading would parse as literal code text;",[1328,5837,5838,5839,5841,5842,5845,5846,5848],{},"a setext underline (a line of only ",[13,5840,4806],{}," or only ",[13,5843,5844],{},"-",") — it would promote the line above it to an\nH1\u002FH2 that is not in the list, with no ",[13,5847,5621],{}," anywhere.",[10,5850,5851,5852,5855],{},"File citations — including the ",[13,5853,5854],{},"primary file:"," line — are rendered inside a code span wide enough to\nsurvive a backtick in the path; a path containing a newline is emitted as a JSON string literal, so\none citation always stays on one line.",[10,5857,5858,5859,5862,5863,690,5866,5869],{},"Table cells and the H1 title get one more treatment: the packet is written straight to your\nterminal, so every control character in them is rendered as its ",[13,5860,5861],{},"\\u{…}"," escape rather than passed\nthrough. A finding title carrying ",[13,5864,5865],{},"\\x1b]52;c;…",[13,5867,5868],{},"\\r\\x1b[2K"," cannot retitle your window, silently\noverwrite your clipboard, or erase and fabricate a line of output.",[96,5871,5873],{"id":5872},"redaction","Redaction",[10,5875,5876,1713,5878,5881,5882,5884,5885,5887,5888,5891,5892,5895],{},[13,5877,587],{},[113,5879,5880],{},"off by default",". The evidence for the highest-severity finding class — a hardcoded\ncredential — ",[143,5883,2363],{}," the secret, so masking by default would destroy the packet's purpose, and the data\nalready lives on the server. With ",[13,5886,587],{}," the assembled document is passed through the same\nsecret-masking rules ",[13,5889,5890],{},"run --redact"," uses and the front matter records ",[13,5893,5894],{},"redacted: true",". The packet\nis never truncated.",[18,5897,3068],{"id":5898},"what-the-cli-never-does",[2381,5900,5901,5907,5915,5925,5937],{},[1328,5902,5903,5906],{},[113,5904,5905],{},"No local findings database or cache."," Every command performs a fresh server read.",[1328,5908,5909,5912,5913,134],{},[113,5910,5911],{},"No file writes"," outside a user-requested output path. Nothing findings-related is written into\n",[13,5914,1214],{},[1328,5916,5917,5924],{},[113,5918,5919,5920,5923],{},"One finding per ",[13,5921,5922],{},"triage"," call."," There is no batch triage endpoint; callers loop.",[1328,5926,5927,5936],{},[113,5928,5929,5930,428,5932,428,5934,134],{},"No client-side expansion of ",[13,5931,281],{},[13,5933,285],{},[13,5935,288],{}," The token is sent verbatim and\nthe membership lives server-side in exactly one place.",[1328,5938,5939,747,5942,282,5944,2122,5946,5948,5949,5952,5953,5956],{},[113,5940,5941],{},"No delimiter parsing.",[13,5943,2900],{},[13,5945,2923],{},[13,5947,2945],{}," come from the server's structured\narrays, so a path containing a newline, a path whose last segment is literally ",[13,5950,5951],{},":42",", and a\ncategory code containing ",[13,5954,5955],{},"\", \""," all round-trip byte-faithfully.",[661,5958,5959,5960,5962,5963,282,5965,2122,5967,5969,5970,5972],{},"One degraded case: against a server older than this release the three structured arrays do not\nexist, and the CLI reports ",[13,5961,127],{}," for ",[13,5964,2900],{},[13,5966,2923],{},[13,5968,2945],{}," rather than failing. Upgrade\nthe server to get report provenance in ",[13,5971,561],{}," and the packet.",[18,5974,5976],{"id":5975},"next-steps","Next steps",[2381,5978,5979,5986,5993,6005],{},[1328,5980,5981,5985],{},[148,5982,5984],{"href":5983},"\u002Fdocs\u002Fguide\u002Fagent","The agent"," — every command and flag.",[1328,5987,5988,5992],{},[148,5989,5991],{"href":5990},"\u002Fdocs\u002Fguide\u002Ftriage","Triage"," — what each status means for the dashboard and the gate.",[1328,5994,5995,5999,6000,78,6002,6004],{},[148,5996,5998],{"href":5997},"\u002Fdocs\u002Fguide\u002Fpr-gate","PR gate"," — why ",[13,6001,1092],{},[13,6003,81],{}," are different tools.",[1328,6006,6007,6010],{},[148,6008,6009],{"href":150},"Findings export"," — the server-side bulk contract.",[6012,6013,6014],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":219,"searchDepth":922,"depth":922,"links":6016},[6017,6023,6024,6031,6033,6037,6047,6052,6053],{"id":20,"depth":922,"text":21,"children":6018},[6019,6021],{"id":98,"depth":1462,"text":6020},"schemaVersion policy",{"id":155,"depth":1462,"text":6022},"thespider_packet policy",{"id":176,"depth":922,"text":177},{"id":208,"depth":922,"text":209,"children":6025},[6026,6027,6029,6030],{"id":222,"depth":1462,"text":225},{"id":558,"depth":1462,"text":6028},"findings show \u002F packet \u002F copy",{"id":590,"depth":1462,"text":593},{"id":81,"depth":1462,"text":81},{"id":696,"depth":922,"text":6032},"Status predicates: open vs actionable",{"id":961,"depth":922,"text":69,"children":6034},[6035],{"id":1311,"depth":1462,"text":6036},"wait is not gate",{"id":1420,"depth":922,"text":52,"children":6038},[6039,6040,6041,6042,6044,6045,6046],{"id":1734,"depth":1462,"text":1477},{"id":2493,"depth":1462,"text":1699},{"id":3698,"depth":1462,"text":1702},{"id":3849,"depth":1462,"text":6043},"findings.packet and findings.copy",{"id":3934,"depth":1462,"text":81},{"id":4724,"depth":1462,"text":4725},{"id":5185,"depth":1462,"text":5186},{"id":5494,"depth":922,"text":86,"children":6048},[6049,6050,6051],{"id":5507,"depth":1462,"text":5508},{"id":5600,"depth":1462,"text":5601},{"id":5872,"depth":1462,"text":5873},{"id":5898,"depth":922,"text":3068},{"id":5975,"depth":922,"text":5976},"Stable JSON envelope, exit codes, and markdown packet format for thespider-agent findings and wait","md",null,{},{"icon":6059},"i-lucide-braces","\u002Fdocs\u002Freference\u002Fagent-cli-json",{"title":5,"description":6054},"docs\u002F4.reference\u002F5.agent-cli-json","JNkNyE7X4mOePMvqpH1R7rE-BLJSrBrwhwTBlAwbrb4",[6065,6056],{"title":6009,"path":150,"stem":6066,"description":6067,"icon":6068,"children":-1},"docs\u002F4.reference\u002F4.findings-export","Download filtered project findings with report, CWE, and file provenance","i-lucide-download",1785793292862]