[{"data":1,"prerenderedAt":1903},["ShallowReactive",2],{"page-\u002Fplatform\u002Fissue-management-guide":3,"navigation":1586},{"id":4,"title":5,"body":6,"description":1569,"extension":1570,"meta":1571,"navigation":1581,"path":1582,"seo":1583,"stem":1584,"__hash__":1585},"docs\u002F01.platform\u002F06.issue-management-guide.md","Issue Management Guide",{"type":7,"value":8,"toc":1533},"minimark",[9,13,20,25,33,36,80,85,97,185,196,244,248,255,259,304,315,319,330,352,371,375,386,390,397,411,415,426,487,490,511,514,520,566,572,581,585,588,608,617,621,632,638,642,760,771,792,796,805,815,841,874,879,885,924,953,958,964,977,981,985,1005,1009,1012,1082,1098,1101,1104,1144,1147,1151,1158,1162,1207,1210,1214,1278,1285,1291,1310,1317,1320,1328,1335,1353,1356,1376,1379,1388,1392,1396,1428,1432,1462,1466,1489,1492,1497],[10,11,5],"h1",{"id":12},"issue-management-guide",[14,15,16],"p",{},[17,18,19],"em",{},"Track remediation work in Dethernety: raising issues from context, filtering the board, and consolidating duplicates.",[21,22,24],"h2",{"id":23},"issues-overview","Issues Overview",[14,26,27,28,32],{},"An ",[29,30,31],"strong",{},"issue"," is a unit of tracked work. It carries a name, a description, a set of module-defined attributes, a comment thread, and links to the model elements it concerns.",[14,34,35],{},"Three things are worth knowing before you start:",[37,38,39,52,58],"ul",{},[40,41,42,45,46,51],"li",{},[29,43,44],{},"Issues live in Dethernety."," They are created, filtered, edited, and closed entirely on the platform. Nothing is pushed to an external tracker — see ",[47,48,50],"a",{"href":49},"#external-system-integration","External system integration",".",[40,53,54,57],{},[29,55,56],{},"An issue's substance comes from its class",", and classes come from modules. The class decides which attributes the issue has.",[40,59,60,63,64,67,68,71,72,75,76,51],{},[29,61,62],{},"Status is binary."," Every issue is either ",[29,65,66],{},"open"," or ",[29,69,70],{},"closed",". Richer lifecycle states, where they exist, are ",[17,73,74],{},"attributes"," the class defines — a different field. See ",[47,77,79],{"href":78},"#status-two-different-things","Status: two different things",[81,82,84],"h3",{"id":83},"where-issue-classes-come-from","Where issue classes come from",[14,86,87,88,91,92,96],{},"Issue classes are supplied by ",[29,89,90],{},"modules",", the same way component and control classes are. The OSS ",[93,94,95],"code",{},"dethernety-general"," module ships six:",[98,99,105],"div",{"className":100,"tabIndex":102,"role":103,"ariaLabel":104},[101],"table-frame",0,"region","Table: Where issue classes come from",[106,107,108,121],"table",{},[109,110,111],"thead",{},[112,113,114,118],"tr",{},[115,116,117],"th",{},"Class",[115,119,120],{},"What it records",[122,123,124,135,145,155,165,175],"tbody",{},[112,125,126,132],{},[127,128,129],"td",{},[29,130,131],{},"Architecture anti-pattern",[127,133,134],{},"A structural design flaw and the technical debt it carries",[112,136,137,142],{},[127,138,139],{},[29,140,141],{},"Configuration Error",[127,143,144],{},"A misconfiguration, its environment, and its root cause",[112,146,147,152],{},[127,148,149],{},[29,150,151],{},"Missing Security Control",[127,153,154],{},"A control that should exist but doesn't, and the plan to add it",[112,156,157,162],{},[127,158,159],{},[29,160,161],{},"Threat Vector",[127,163,164],{},"A STRIDE-categorised threat, its likelihood, and the actor behind it",[112,166,167,172],{},[127,168,169],{},[29,170,171],{},"Vulnerability",[127,173,174],{},"A software flaw, with CVE id and CVSS score",[112,176,177,182],{},[127,178,179],{},[29,180,181],{},"Other",[127,183,184],{},"Anything the five above don't describe",[14,186,187,188,191,192,51],{},"This is ",[29,189,190],{},"not a closed list"," — a deployment with additional modules installed will offer their issue classes too, everywhere issue classes are offered. If none of the available classes fits, the answer is a module that supplies one; see ",[47,193,195],{"href":194},"\u002Fplatform\u002Funderstanding-modules","Understanding Modules",[14,197,198,199,202,203,206,207,206,210,206,213,216,217,220,221,224,225,228,229,232,233,236,237,240,241,51],{},"All six shipped classes define a ",[29,200,201],{},"severity"," (",[93,204,205],{},"critical"," \u002F ",[93,208,209],{},"high",[93,211,212],{},"medium",[93,214,215],{},"low",") and a ",[29,218,219],{},"status"," attribute. The status ",[17,222,223],{},"values"," differ per class — a Vulnerability moves ",[93,226,227],{},"new → confirmed → in-progress → fixed → verified → closed",", while a Threat Vector moves ",[93,230,231],{},"identified → analyzing → mitigating → monitored → resolved → accepted",". Threat Vector additionally carries ",[29,234,235],{},"likelihood","; Vulnerability additionally carries ",[29,238,239],{},"cveId"," and ",[29,242,243],{},"cvssScore",[21,245,247],{"id":246},"creating-issues","Creating Issues",[14,249,250,251,254],{},"Creation always works the same way: you pick an ",[29,252,253],{},"issue class",", and the issue is created immediately. There is no dialog that asks for a name and a type before the issue exists — you name it afterwards.",[81,256,258],{"id":257},"from-the-issues-page","From the Issues page",[260,261,262,269,279,286,293],"ol",{},[40,263,264,265,268],{},"Click ",[29,266,267],{},"Issues"," in the main navigation.",[40,270,271,272,275,276,51],{},"Click the ",[29,273,274],{},"+"," button at the top right of the issue list. Its tooltip reads ",[17,277,278],{},"New issue",[40,280,281,282,285],{},"The button expands into ",[29,283,284],{},"one button per issue class",". Click the class you want.",[40,287,288,289,292],{},"The issue is created straight away, named ",[93,290,291],{},"New \u003CClass> Issue",", and its card expands in the list.",[40,294,295,296,299,300,303],{},"Rename it on the ",[29,297,298],{},"General"," tab, fill in the ",[29,301,302],{},"Attributes"," tab, and save.",[14,305,306,307,310,311,314],{},"An issue raised this way starts with ",[29,308,309],{},"no associated elements",". Add them from the ",[29,312,313],{},"Associated Elements"," tab, or raise the issue from context instead.",[81,316,318],{"id":317},"from-an-element","From an element",[14,320,321,322,325,326,329],{},"Open a component, security boundary, or data flow's ",[29,323,324],{},"settings panel"," (double-click the node or the flow arrow on the canvas). At the bottom of the panel, next to the delete button, is a round ",[29,327,328],{},"alert-plus"," button. Click it and a sheet opens with:",[37,331,332,346],{},[40,333,334,337,338,341,342,51],{},[29,335,336],{},"Add to Issue"," — copies this element to the clipboard for adding to an ",[17,339,340],{},"existing"," issue. See ",[47,343,345],{"href":344},"#adding-elements-to-an-existing-issue","Adding elements to an existing issue",[40,347,348,351],{},[29,349,350],{},"One button per issue class"," — creates a new issue of that class, already linked to this element.",[14,353,354,355,358,359,364,365,370],{},"The same sheet appears on the ",[29,356,357],{},"Exposures"," tab of an element (and in the maximized Exposures dialog), on each exposure row. An issue raised from an exposure is pre-named ",[17,360,361],{},[93,362,363],{},"\u003CExposure> Issue on \u003Celement>"," with the description ",[17,366,367],{},[93,368,369],{},"Exposure: \u003Cexposure description>"," — the only creation path that pre-fills a name.",[81,372,374],{"id":373},"from-the-model-dialog","From the Model dialog",[14,376,377,378,381,382,385],{},"Right-click a model card in the Browser, or click the ",[29,379,380],{},"Model settings"," icon on the card or on the editor's canvas toolbar. The dialog's footer has an ",[29,383,384],{},"Add Issue"," section holding the same alert-plus button, with the same two options.",[81,387,389],{"id":388},"from-a-finding-in-an-analysis-result","From a finding in an analysis result",[14,391,392,393,396],{},"A module's results view can hand a finding to the platform's issue workflow. The dialog that opens is titled ",[29,394,395],{},"Raise an issue from this finding"," and offers:",[37,398,399,405],{},[40,400,401,404],{},[29,402,403],{},"Add to Issue board"," — the clipboard path, described below.",[40,406,407,410],{},[29,408,409],{},"Or create an issue:"," — one button per issue class.",[81,412,414],{"id":413},"what-actually-gets-associated","What actually gets associated",[14,416,417,418,421,422,425],{},"Raising an issue from context links a ",[29,419,420],{},"small, specific"," set of elements — not everything visible on screen. This matters when you later filter by ",[93,423,424],{},"elementIds",", or navigate from the issue back to its sources.",[98,427,430],{"className":428,"tabIndex":102,"role":103,"ariaLabel":429},[101],"Table: What actually gets associated",[106,431,432,442],{},[109,433,434],{},[112,435,436,439],{},[115,437,438],{},"Raised from",[115,440,441],{},"Elements linked",[122,443,444,455,463,471,479],{},[112,445,446,452],{},[127,447,448,449,451],{},"The Issues page ",[29,450,274],{}," button",[127,453,454],{},"Nothing",[112,456,457,460],{},[127,458,459],{},"An element's settings panel",[127,461,462],{},"The element, the model it lives in, and — if the element represents a model — that represented model",[112,464,465,468],{},[127,466,467],{},"An exposure row",[127,469,470],{},"The exposure, its host element, and the model",[112,472,473,476],{},[127,474,475],{},"A finding in a module's results view",[127,477,478],{},"The finding, the element it was raised on, and the model",[112,480,481,484],{},[127,482,483],{},"The Model dialog",[127,485,486],{},"The model, and nothing else",[14,488,489],{},"Two consequences are easy to get wrong:",[37,491,492,502],{},[40,493,494,497,498,501],{},[29,495,496],{},"A model-raised issue is linked to the model only."," It is ",[17,499,500],{},"not"," linked to the components, data flows, boundaries, or controls inside that model.",[40,503,504,507,508,510],{},[29,505,506],{},"The analysis run is never linked automatically."," An issue raised from a finding records the finding, the element, and the model — not the analysis that produced it. If you want the run on the issue, add it by hand from the ",[29,509,313],{}," tab.",[21,512,345],{"id":513},"adding-elements-to-an-existing-issue",[14,515,516,517,519],{},"The ",[29,518,336],{}," button copies the current element to an internal clipboard and sends you to the Issues page, where you paste it into an existing issue.",[260,521,522,533,539,553],{},[40,523,524,527,528,202,530,532],{},[29,525,526],{},"Copy."," From an element's settings panel, an exposure row, the Model dialog, or a finding's dialog, click ",[29,529,336],{},[29,531,403],{}," on the finding dialog). Dethernety navigates you to the Issues page.",[40,534,535,538],{},[29,536,537],{},"Find the target issue."," Filter or search for it, then click its row to expand the card.",[40,540,541,544,545,548,549,552],{},[29,542,543],{},"Paste."," Click ",[29,546,547],{},"Add from clipboard"," (paste icon) in the left column of the card. The elements are linked, and a ",[29,550,551],{},"timestamped comment"," recording what was added is prepended to the comment thread.",[40,554,555,558,559,565],{},[29,556,557],{},"Go back."," A ",[29,560,561,562],{},"Return to ",[93,563,564],{},"\u003Cpage>"," button appears on the card, taking you to where the copy started.",[14,567,568,571],{},[29,569,570],{},"The clipboard holds one item."," Copying a second element overwrites the first — there is no queue. To attach three findings to one issue, copy and paste them one at a time: copy → paste → return → copy the next.",[14,573,516,574,576,577,580],{},[29,575,547],{}," button only exists while something is on the clipboard. It disappears once you have pasted, and the clipboard ",[29,578,579],{},"expires 30 minutes"," after the copy. If the button isn't there, make the copy again.",[81,582,584],{"id":583},"the-associated-elements-tab","The Associated Elements tab",[14,586,587],{},"The tab lists every linked element with its type, and for an exposure, the component it was found on. Per row you can:",[37,589,590,596,602],{},[40,591,592,595],{},[29,593,594],{},"Open the analysis results"," (chart icon) — shown only for a linked analysis.",[40,597,598,601],{},[29,599,600],{},"Open the model"," in the data flow editor (polyline icon).",[40,603,604,607],{},[29,605,606],{},"Unlink"," the element from the issue (broken-link icon).",[14,609,516,610,612,613,616],{},[29,611,274],{}," button at the top of the table adds ",[29,614,615],{},"models"," to the issue. Elements other than models are added through the clipboard workflow above, or by raising the issue from that element in the first place.",[21,618,620],{"id":619},"filtering-and-search","Filtering and Search",[14,622,623,624,627,628,631],{},"The Issues page combines ",[29,625,626],{},"server-side"," filtering (narrows what is fetched) with ",[29,629,630],{},"client-side"," filtering (narrows what is rendered). The search box, the filter menus, and the chip row are three views of one query — the menus write into the same query the box parses.",[14,633,634,635,51],{},"By default the page shows ",[29,636,637],{},"open issues",[81,639,641],{"id":640},"filter-menus","Filter menus",[98,643,646],{"className":644,"tabIndex":102,"role":103,"ariaLabel":645},[101],"Table: Filter menus",[106,647,648,661],{},[109,649,650],{},[112,651,652,655,658],{},[115,653,654],{},"Menu",[115,656,657],{},"Kind",[115,659,660],{},"Values",[122,662,663,675,687,718,737],{},[112,664,665,669,672],{},[127,666,667],{},[29,668,117],{},[127,670,671],{},"Server-side",[127,673,674],{},"All Classes, or one issue class",[112,676,677,682,684],{},[127,678,679],{},[29,680,681],{},"Issue Status",[127,683,671],{},[127,685,686],{},"All Issues \u002F Open Issues \u002F Closed Issues",[112,688,689,694,697],{},[127,690,691],{},[29,692,693],{},"Status",[127,695,696],{},"Client-side",[127,698,699,702,703,702,706,702,709,702,712,702,715],{},[93,700,701],{},"identified",", ",[93,704,705],{},"analyzing",[93,707,708],{},"mitigating",[93,710,711],{},"monitored",[93,713,714],{},"resolved",[93,716,717],{},"accepted",[112,719,720,725,727],{},[127,721,722],{},[29,723,724],{},"Severity",[127,726,696],{},[127,728,729,702,731,702,733,702,735],{},[93,730,205],{},[93,732,209],{},[93,734,212],{},[93,736,215],{},[112,738,739,744,746],{},[127,740,741],{},[29,742,743],{},"Likelihood",[127,745,696],{},[127,747,748,702,751,702,753,702,755,702,757],{},[93,749,750],{},"very-high",[93,752,209],{},[93,754,212],{},[93,756,215],{},[93,758,759],{},"very-low",[14,761,762,763,766,767,770],{},"Each selection adds a closable ",[29,764,765],{},"chip"," below the search box; the ",[29,768,769],{},"filter-remove"," button clears them all. Menus combine with AND across dimensions and OR within one.",[14,772,773,776,777,240,779,781,782,785,786,788,789,51],{},[29,774,775],{},"The Status and Likelihood menus offer one class's vocabulary."," Their fixed value lists are the Threat Vector class's ",[93,778,219],{},[93,780,235],{}," enums. They will not match a Vulnerability whose status is ",[93,783,784],{},"confirmed",", or any class that has no likelihood at all. ",[29,787,724],{}," is the only attribute filter every shipped class answers to. To filter another class's status, type the condition yourself: ",[93,790,791],{},"(status:\"confirmed\")",[81,793,795],{"id":794},"query-syntax","Query syntax",[14,797,798],{},[29,799,800,801,804],{},"Server-side — bare ",[93,802,803],{},"key:value",":",[806,807,812],"pre",{"className":808,"code":810,"language":811},[809],"language-text","issueStatus:open\nclassType:Vulnerability\n","text",[93,813,810],{"__ignoreMap":814},"",[14,816,817,818,702,821,702,824,702,827,702,829,702,832,702,835,702,838,51],{},"Accepted keys: ",[93,819,820],{},"name",[93,822,823],{},"issueId",[93,825,826],{},"classId",[93,828,424],{},[93,830,831],{},"classType",[93,833,834],{},"moduleId",[93,836,837],{},"moduleName",[93,839,840],{},"issueStatus",[14,842,843,844,847,848,851,852,855,856,859,860,862,863,865,866,868,869,240,871,873],{},"Every server-side key is an ",[29,845,846],{},"exact, case-sensitive match"," — not a search. ",[93,849,850],{},"name:'Payment Security'"," finds an issue named exactly ",[17,853,854],{},"Payment Security"," and nothing else; for a partial name use the client-side form below. ",[93,857,858],{},"classType:vulnerability"," matches nothing, because the class's type is ",[93,861,171],{},". Quote a value that contains spaces. Only ",[93,864,424],{}," takes a list (comma-separated). ",[93,867,840],{}," accepts only ",[93,870,66],{},[93,872,70],{},"; any other value is dropped.",[14,875,876],{},[29,877,878],{},"Client-side — parenthesized groups:",[806,880,883],{"className":881,"code":882,"language":811},[809],"(severity:high OR severity:critical)\n(class.name:\"Threat Vector\" AND severity:critical)\n(status:confirmed)\n",[93,884,882],{"__ignoreMap":814},[14,886,887,888,702,891,702,893,702,896,702,899,702,902,702,904,702,907,702,910,702,913,916,917,206,920,923],{},"Keys: ",[93,889,890],{},"id",[93,892,820],{},[93,894,895],{},"description",[93,897,898],{},"type",[93,900,901],{},"category",[93,903,74],{},[93,905,906],{},"comments",[93,908,909],{},"createdAt",[93,911,912],{},"updatedAt",[93,914,915],{},"lastSyncAt",", plus ",[93,918,919],{},"class.name",[93,921,922],{},"class.type",", plus any attribute the issue's class defines.",[14,925,926,927,930,931,934,935,938,939,941,942,945,946,240,949,952],{},"Client-side matching ignores case. An ",[29,928,929],{},"unquoted"," value substring-matches; a ",[29,932,933],{},"quoted"," value matches the whole field. So ",[93,936,937],{},"(name:payment)"," finds ",[17,940,854],{}," while ",[93,943,944],{},"(name:\"payment\")"," does not. Attribute lookups accept either the direct path or the bare key — ",[93,947,948],{},"(attributes.severity:high)",[93,950,951],{},"(severity:high)"," both work; the bare form searches the issue's attributes recursively, a few levels deep.",[14,954,955],{},[29,956,957],{},"Combining both:",[806,959,962],{"className":960,"code":961,"language":811},[809],"issueStatus:open (severity:high)\nclassType:Vulnerability (name:SQL OR description:injection)\n",[93,963,961],{"__ignoreMap":814},[14,965,966,967,969,970,973,974,976],{},"A bare ",[93,968,803],{}," that isn't a server-side key is dropped with an advisory hint under the box — the usual cause is a client-side condition written without parentheses (",[93,971,972],{},"severity:high"," instead of ",[93,975,951],{},").",[21,978,980],{"id":979},"working-with-an-issue","Working with an Issue",[81,982,984],{"id":983},"the-list-row","The list row",[14,986,987,988,991,992,994,995,997,998,1000,1001,1004],{},"A collapsed row carries a ",[29,989,990],{},"selection checkbox",", the issue ",[29,993,820],{},", a ",[29,996,201],{}," chip (only when the issue's ",[93,999,201],{}," attribute is set), and its ",[29,1002,1003],{},"class"," chip. Clicking the row expands the issue card. The row itself has no other actions — status and delete live in the card.",[81,1006,1008],{"id":1007},"the-issue-card","The issue card",[14,1010,1011],{},"The card has a left column of actions and four tabs:",[98,1013,1016],{"className":1014,"tabIndex":102,"role":103,"ariaLabel":1015},[101],"Table: The issue card",[106,1017,1018,1028],{},[109,1019,1020],{},[112,1021,1022,1025],{},[115,1023,1024],{},"Tab",[115,1026,1027],{},"What you do there",[122,1029,1030,1039,1063,1072],{},[112,1031,1032,1036],{},[127,1033,1034],{},[29,1035,298],{},[127,1037,1038],{},"Edit the name and description",[112,1040,1041,1045],{},[127,1042,1043],{},[29,1044,302],{},[127,1046,1047,1048,702,1051,1054,1055,1058,1059],{},"Fill in the attributes the issue's class defines. A yes\u002Fno attribute answers ",[29,1049,1050],{},"Yes",[29,1052,1053],{},"No",", or ",[29,1056,1057],{},"Not answered"," — see ",[47,1060,1062],{"href":1061},"\u002Fplatform\u002Fcomponent-configuration-guide#answering-yes-or-no-attributes","Answering yes-or-no attributes",[112,1064,1065,1069],{},[127,1066,1067],{},[29,1068,313],{},[127,1070,1071],{},"Review, navigate to, add, and unlink elements",[112,1073,1074,1079],{},[127,1075,1076],{},[29,1077,1078],{},"Comments",[127,1080,1081],{},"Read and add comments",[14,1083,1084,1085,206,1088,1091,1092,1095,1096,51],{},"The left column holds the class chip, the ",[29,1086,1087],{},"Close Issue",[29,1089,1090],{},"Open Issue"," toggle, the ",[29,1093,1094],{},"delete"," button (trash icon, with a confirmation), and — when something is on the clipboard — ",[29,1097,547],{},[81,1099,79],{"id":1100},"status-two-different-things",[14,1102,1103],{},"Two fields are both called \"status\", and they are unrelated:",[37,1105,1106,1124],{},[40,1107,1108,1111,1112,206,1114,1116,1117,1119,1120,67,1122,51],{},[29,1109,1110],{},"The issue's open\u002Fclosed status"," is the platform's own field, flipped by the ",[29,1113,1087],{},[29,1115,1090],{}," button and filtered by the ",[29,1118,681],{}," menu. It only ever holds ",[93,1121,66],{},[93,1123,70],{},[40,1125,1126,1132,1133,1135,1136,702,1138,702,1140,1143],{},[29,1127,1128,1129,1131],{},"A class's ",[93,1130,219],{}," attribute"," is module-defined, lives on the ",[29,1134,302],{}," tab, and has whatever values the class declares (",[93,1137,784],{},[93,1139,708],{},[93,1141,1142],{},"verified",", …). Setting it does not close the issue, and closing the issue does not change it.",[14,1145,1146],{},"Keep both current: the attribute records where the work stands, the open\u002Fclosed flag records whether it is still on the board.",[21,1148,1150],{"id":1149},"merging-issues","Merging Issues",[14,1152,1153,1154,1157],{},"Merging creates ",[29,1155,1156],{},"one new issue"," from several and closes the originals. It is useful for duplicate reports of the same problem, or for consolidating fragmented tracking of one root cause.",[81,1159,1161],{"id":1160},"how-to-merge","How to merge",[260,1163,1164,1174,1183,1201],{},[40,1165,1166,1169,1170,1173],{},[29,1167,1168],{},"Select"," two or more issues with the row checkboxes. The ",[29,1171,1172],{},"merge"," button (link icon, top right of the list) stays disabled below two.",[40,1175,1176,1179,1180,1182],{},[29,1177,1178],{},"Click merge"," and pick the ",[29,1181,1003],{}," for the new issue from the buttons that appear.",[40,1184,1185,1188,1189,1196,1197,1200],{},[29,1186,1187],{},"Confirm."," A dialog states the consequence — ",[17,1190,1191,1192,1195],{},"Close N issues and create one merged ",[93,1193,1194],{},"\u003CClass>"," issue. The originals are closed, not deleted, and remain available under the Closed filter."," — and, if the Open filter is active, warns that the originals will leave the view. Click ",[29,1198,1199],{},"Merge & close"," to proceed.",[40,1202,1203,1206],{},[29,1204,1205],{},"Read the result."," A snackbar names the merged issue. If some originals could not be closed, or the merged issue could not be created after closing them, the snackbar says so and names the count to review by hand.",[14,1208,1209],{},"If any selected issue's detail fails to load, the merge is cancelled before anything is written, rather than silently dropping that issue's elements.",[81,1211,1213],{"id":1212},"what-the-merged-issue-actually-carries","What the merged issue actually carries",[98,1215,1218],{"className":1216,"tabIndex":102,"role":103,"ariaLabel":1217},[101],"Table: What the merged issue actually carries",[106,1219,1220,1230],{},[109,1221,1222],{},[112,1223,1224,1227],{},[115,1225,1226],{},"Carried over",[115,1228,1229],{},"Not carried over",[122,1231,1232,1245,1268],{},[112,1233,1234,1240],{},[127,1235,1236,1239],{},[29,1237,1238],{},"Associated elements"," from every source issue, combined",[127,1241,1242,1244],{},[29,1243,302],{}," — see the warning below",[112,1246,1247,1258],{},[127,1248,1249,1251,1252],{},[29,1250,1078],{}," from every source issue, each block prefixed ",[17,1253,1254,1255],{},"Comments from ",[93,1256,1257],{},"\u003Cissue name>",[127,1259,1260,1263,1264,1267],{},[29,1261,1262],{},"Descriptions"," — only the source issues' ",[17,1265,1266],{},"names"," are recorded",[112,1269,1270,1272],{},[127,1271],{},[127,1273,1274,1277],{},[29,1275,1276],{},"Provenance"," — no \"created by merge\" field is written",[14,1279,1280,1281,1284],{},"The merged issue is named ",[93,1282,1283],{},"New \u003CClass> Issue from N issues"," and its description is a list of the names it was built from:",[806,1286,1289],{"className":1287,"code":1288,"language":811},[809],"Merged issues:\n- Unencrypted payment channel\n - Missing TLS on checkout flow\n",[93,1290,1288],{"__ignoreMap":814},[1292,1293,1294,1304],"blockquote",{},[14,1295,1296,1299,1300,1303],{},[29,1297,1298],{},"Merging discards attributes."," The merged issue is created with ",[29,1301,1302],{},"empty attributes",". Severity, status, CVE id, CVSS score, likelihood, remediation notes — everything on the Attributes tab of every source issue — is not copied, and you are not warned at the time. The originals keep their attributes (they are closed, not deleted), so the data is recoverable, but you have to go and read it off them.",[14,1305,1306,1309],{},[29,1307,1308],{},"Before merging",", copy anything you need from the sources' Attributes tabs, and re-enter it on the merged issue afterwards. If the source descriptions matter, copy those too — only the names survive.",[14,1311,1312,1313,1316],{},"Closing the originals writes ",[29,1314,1315],{},"nothing else",": no closure comment, no back-reference to the merged issue, no audit record of the merge. The link back is the merged issue's description, which names them.",[21,1318,50],{"id":1319},"external-system-integration",[1292,1321,1322],{},[14,1323,1324,1327],{},[29,1325,1326],{},"No integration module ships with Dethernety."," Issues are created, tracked, and closed entirely on the platform. Nothing you do here reaches Jira, ServiceNow, GitHub, or any other tracker unless someone writes a module that makes it so.",[14,1329,1330,1331,1334],{},"The platform provides one ",[29,1332,1333],{},"seam"," a module can implement: a hook that reads an issue's attributes from an external system. Where a module implements it:",[37,1336,1337,1347,1350],{},[40,1338,1339,1340,1343,1344,1346],{},"The values it returns surface as the issue's ",[29,1341,1342],{},"synced attributes"," — searchable alongside the issue's own fields, and the source of the ",[29,1345,201],{}," chip on issue rows.",[40,1348,1349],{},"The platform records the time of the last successful sync on the issue.",[40,1351,1352],{},"A timeout guards the call, so a slow or unreachable external system cannot stall the page.",[14,1354,1355],{},"Three properties of that seam are worth stating plainly, because they bound what any integration module can do without changing the platform:",[37,1357,1358,1364,1370],{},[40,1359,1360,1363],{},[29,1361,1362],{},"It is inbound only."," The module reads; the platform never writes back. Creating, closing, or commenting on an issue in Dethernety changes nothing outside it.",[40,1365,1366,1369],{},[29,1367,1368],{},"It is pull-on-read."," The hook runs when an issue is read, not on a schedule. There is no background sync, no interval, and no retry queue.",[40,1371,1372,1375],{},[29,1373,1374],{},"It is a fallback, not a requirement."," When no module implements the hook — which is the case for every module shipped today — the issue's own attributes are returned unchanged, with the sync marked unsuccessful. This is why severity chips and attribute filters work perfectly well with no integration at all: they are reading the attributes you entered.",[14,1377,1378],{},"Anything richer — pushing issues outward, mirroring status both ways, field mapping, escalation — is the module's own business and is not something the platform supplies or configures.",[14,1380,1381,1382,51],{},"Writing such a module is covered in the ",[47,1383,1387],{"href":1384,"rel":1385},"https:\u002F\u002Fgithub.com\u002Fdether-net\u002Fdethernety-oss\u002Fblob\u002Fmain\u002Fdocs\u002Farchitecture\u002Fmodules\u002FDEVELOPMENT_GUIDE.md",[1386],"nofollow","Module Development Guide",[21,1389,1391],{"id":1390},"best-practices","Best Practices",[81,1393,1395],{"id":1394},"filtering","Filtering",[37,1397,1398,1404,1416,1422],{},[40,1399,1400,1403],{},[29,1401,1402],{},"Narrow server-side first"," (Class, Issue Status) on a large board, then refine client-side.",[40,1405,1406,1409,1410,1412,1413,51],{},[29,1407,1408],{},"Remember exact-match."," For a partial name, use the client-side form ",[93,1411,937],{},", not the server-side ",[93,1414,1415],{},"name:payment",[40,1417,1418,1421],{},[29,1419,1420],{},"Prefer the chips"," to reading the query string — they show what is actually applied, and each one removes independently.",[40,1423,1424,1425,1427],{},"Filter state is ",[29,1426,500],{}," in the URL, so a filtered view can't be bookmarked or shared. Rebuild it from the menus, which takes a few clicks.",[81,1429,1431],{"id":1430},"creating-issues-1","Creating issues",[37,1433,1434,1440,1450,1456],{},[40,1435,1436,1439],{},[29,1437,1438],{},"Raise from context"," wherever you can. An issue raised from an element or an exposure arrives already linked; one raised from the Issues page arrives empty.",[40,1441,1442,1445,1446,1449],{},[29,1443,1444],{},"Rename immediately."," ",[93,1447,1448],{},"New Vulnerability Issue"," is not a name anyone can triage.",[40,1451,1452,1455],{},[29,1453,1454],{},"Fill severity first."," It is the one attribute the list row surfaces and the one filter every class answers to.",[40,1457,1458,1461],{},[29,1459,1460],{},"Add the analysis by hand"," if traceability to a specific run matters — nothing links it for you.",[81,1463,1465],{"id":1464},"tracking","Tracking",[37,1467,1468,1477,1483],{},[40,1469,1470,1473,1474,1476],{},[29,1471,1472],{},"Use both status fields",": the class's ",[93,1475,219],{}," attribute for where the work stands, open\u002Fclosed for whether it is still on the board.",[40,1478,1479,1482],{},[29,1480,1481],{},"Use comments"," for the investigation trail; the clipboard workflow already writes one every time an element is attached.",[40,1484,1485,1488],{},[29,1486,1487],{},"Merge deliberately."," Copy the attributes you need off the sources first.",[1490,1491],"hr",{},[14,1493,1494],{},[29,1495,1496],{},"Next Steps:",[37,1498,1499,1508,1517,1526],{},[40,1500,1501,1507],{},[29,1502,1503],{},[47,1504,1506],{"href":1505},"\u002Fplatform\u002Fsecurity-analysis-workflow","Security Analysis Workflow",": Run analysis and raise issues from its findings",[40,1509,1510,1516],{},[29,1511,1512],{},[47,1513,1515],{"href":1514},"\u002Fplatform\u002Fmanaging-findings","Managing Findings",": Affirm, dispose, and customize exposures and countermeasures",[40,1518,1519,1525],{},[29,1520,1521],{},[47,1522,1524],{"href":1523},"\u002Fplatform\u002Fworking-with-security-controls","Working with Security Controls",": Understand how controls relate to issue resolution",[40,1527,1528,1532],{},[29,1529,1530],{},[47,1531,195],{"href":194},": Where issue classes come from",{"title":814,"searchDepth":1534,"depth":1534,"links":1535},3,[1536,1540,1547,1550,1554,1559,1563,1564],{"id":23,"depth":1537,"text":24,"children":1538},2,[1539],{"id":83,"depth":1534,"text":84},{"id":246,"depth":1537,"text":247,"children":1541},[1542,1543,1544,1545,1546],{"id":257,"depth":1534,"text":258},{"id":317,"depth":1534,"text":318},{"id":373,"depth":1534,"text":374},{"id":388,"depth":1534,"text":389},{"id":413,"depth":1534,"text":414},{"id":513,"depth":1537,"text":345,"children":1548},[1549],{"id":583,"depth":1534,"text":584},{"id":619,"depth":1537,"text":620,"children":1551},[1552,1553],{"id":640,"depth":1534,"text":641},{"id":794,"depth":1534,"text":795},{"id":979,"depth":1537,"text":980,"children":1555},[1556,1557,1558],{"id":983,"depth":1534,"text":984},{"id":1007,"depth":1534,"text":1008},{"id":1100,"depth":1534,"text":79},{"id":1149,"depth":1537,"text":1150,"children":1560},[1561,1562],{"id":1160,"depth":1534,"text":1161},{"id":1212,"depth":1534,"text":1213},{"id":1319,"depth":1537,"text":50},{"id":1390,"depth":1537,"text":1391,"children":1565},[1566,1567,1568],{"id":1394,"depth":1534,"text":1395},{"id":1430,"depth":1534,"text":1431},{"id":1464,"depth":1534,"text":1465},"Issue tracking, filtering, and management in Dethernety.","md",{"category":1572,"position":1573,"tags":1574},"issues",8,[1575,1576,1577,1572,1394,1578,1579,1580],"intermediate","guide","detailed","clipboard-workflow","merging","practical",true,"\u002Fplatform\u002Fissue-management-guide",{"title":5,"description":1569},"01.platform\u002F06.issue-management-guide","oNx18lmrCDF1aMTSeYrLusXss6Ex_BaiGvbCR-Gi0RI",[1587,1630,1665,1720,1754,1798,1813,1883],{"title":1588,"description":1589,"path":1590,"stem":1591,"children":1592,"page":-1},"Platform","Modelling, analysis, findings and controls in the Dethernety platform.","\u002Fplatform","01.platform",[1593,1597,1602,1607,1610,1613,1616,1617,1622,1625],{"title":1594,"path":1590,"stem":1595,"description":1596},"Dethernety User Documentation","01.platform\u002Findex","User guide for the Dethernety threat modeling platform",{"title":1598,"path":1599,"stem":1600,"description":1601},"Quick Start","\u002Fplatform\u002Fquick-start","01.platform\u002F01.quick-start","Install Dethernety on your own machine, draw a four-element model and read its first threat finding.",{"title":1603,"path":1604,"stem":1605,"description":1606},"Building Your First Model","\u002Fplatform\u002Fbuilding-your-first-model","01.platform\u002F02.building-your-first-model","Build a threat model of an online store in about 30 minutes, run a Threat Report on it, and raise an issue from a finding.",{"title":1506,"path":1505,"stem":1608,"description":1609},"01.platform\u002F03.security-analysis-workflow","How to run security analysis and interpret results to improve your threat models.",{"title":1515,"path":1514,"stem":1611,"description":1612},"01.platform\u002F04.managing-findings","Record decisions on system-generated exposures and countermeasures — affirm them as confirmed live risk, or mute them as not applicable, false positive, waived, or superseded — instead of deleting them.",{"title":1524,"path":1523,"stem":1614,"description":1615},"01.platform\u002F05.working-with-security-controls","Learn how to create, manage, and assign reusable security controls in Dethernety to protect your threat models.",{"title":5,"path":1582,"stem":1584,"description":1569},{"title":1618,"path":1619,"stem":1620,"description":1621},"Boundary Trust Zones","\u002Fplatform\u002Fboundary-trust-zones","01.platform\u002F07.boundary-trust-zones","Record each security boundary's trust zone, business domains, operational role, and approved channels to document how your system is meant to be segmented.",{"title":195,"path":194,"stem":1623,"description":1624},"01.platform\u002F08.understanding-modules","How Dethernety's module system extends your threat modeling capabilities.",{"title":1626,"path":1627,"stem":1628,"description":1629},"Component Configuration Guide","\u002Fplatform\u002Fcomponent-configuration-guide","01.platform\u002F09.component-configuration-guide","Detailed guide on configuring different types of components and their security implications.",{"title":1631,"description":1632,"path":1633,"stem":1634,"children":1635,"page":-1},"BYODt cloud","Deploying the platform yourself and connecting it to the BYODt cloud.","\u002Fbyodt-cloud","02.byodt-cloud",[1636,1640,1645,1650,1655,1660],{"title":1637,"path":1633,"stem":1638,"description":1639},"BYODt Deployment","02.byodt-cloud\u002Findex","Run Dethernety on your own machine: install, configure, operate, and recover",{"title":1641,"path":1642,"stem":1643,"description":1644},"Installing the BYODt Deployment","\u002Fbyodt-cloud\u002Finstallation","02.byodt-cloud\u002F01.installation","Install Dethernety on your own machine: check the requirements, download and verify the signed bundle, start it, and confirm the deployment is healthy",{"title":1646,"path":1647,"stem":1648,"description":1649},"Configuring the BYODt Deployment","\u002Fbyodt-cloud\u002Fconfiguration","02.byodt-cloud\u002F02.configuration","The .env settings reference, the generated secret file, database storage, and how to apply a change",{"title":1651,"path":1652,"stem":1653,"description":1654},"Operating the BYODt Deployment","\u002Fbyodt-cloud\u002Foperations","02.byodt-cloud\u002F03.operations","The byodt command reference and the day-to-day tasks: start, stop, inspect, back up, restore, TLS, upgrade, remove",{"title":1656,"path":1657,"stem":1658,"description":1659},"Connecting the BYODt Deployment to the Cloud","\u002Fbyodt-cloud\u002Fcloud","02.byodt-cloud\u002F04.cloud","Add cloud sign-in and content packages from the operator console, and disconnect again",{"title":1661,"path":1662,"stem":1663,"description":1664},"Troubleshooting the BYODt Deployment","\u002Fbyodt-cloud\u002Ftroubleshooting","02.byodt-cloud\u002F05.troubleshooting","Symptom, cause, and fix for the failures this deployment reports",{"title":1666,"description":1667,"path":1668,"stem":1669,"children":1670,"page":-1},"Dethereal","The Claude Code plugin: build a threat model in conversation and publish it to the platform.","\u002Fdethereal","03.dethereal",[1671,1675,1680,1685,1690,1695,1700,1705,1710,1715],{"title":1672,"path":1668,"stem":1673,"description":1674},"Dethereal — Claude Code Plugin for Threat Modeling","03.dethereal\u002Findex","Comprehensive documentation for the Dethereal threat modeling plugin",{"title":1676,"path":1677,"stem":1678,"description":1679},"Getting Started with Dethereal","\u002Fdethereal\u002Fgetting-started","03.dethereal\u002F01.getting-started","Install the plugin, authenticate, and create your first threat model",{"title":1681,"path":1682,"stem":1683,"description":1684},"The 11-Step Guided Workflow","\u002Fdethereal\u002Fguided-workflow","03.dethereal\u002F02.guided-workflow","Complete walkthrough of the \u002Fdethereal:threat-model guided process",{"title":1686,"path":1687,"stem":1688,"description":1689},"Command Reference","\u002Fdethereal\u002Fcommand-reference","03.dethereal\u002F03.command-reference","Complete reference for all 14 Dethereal slash commands",{"title":1691,"path":1692,"stem":1693,"description":1694},"Threat Model Concepts","\u002Fdethereal\u002Fmodel-concepts","03.dethereal\u002F04.model-concepts","Components, boundaries, data flows, classes, attributes, and quality scoring",{"title":1696,"path":1697,"stem":1698,"description":1699},"Discovery and Enrichment","\u002Fdethereal\u002Fdiscovery-and-enrichment","03.dethereal\u002F05.discovery-and-enrichment","Infrastructure scanning, security attributes, MITRE ATT&CK, credentials, and compliance",{"title":1701,"path":1702,"stem":1703,"description":1704},"Sync and Version Control","\u002Fdethereal\u002Fsync-and-version-control","03.dethereal\u002F06.sync-and-version-control","Push\u002Fpull workflow, conflict handling, git integration, and multi-model projects",{"title":1706,"path":1707,"stem":1708,"description":1709},"Review and Attack Surface Analysis","\u002Fdethereal\u002Freview-and-analysis","03.dethereal\u002F07.review-and-analysis","Quality review, attack surface summary, and platform analysis integration",{"title":1711,"path":1712,"stem":1713,"description":1714},"Agents, Tools, and Hooks","\u002Fdethereal\u002Fagents-and-architecture","03.dethereal\u002F08.agents-and-architecture","How the 5 AI agents, 22 MCP tools, and 3 lifecycle hooks work together",{"title":1716,"path":1717,"stem":1718,"description":1719},"Dethereal Glossary","\u002Fdethereal\u002Fglossary","03.dethereal\u002F09.glossary","Definitions for Dethereal-specific terminology",{"title":1721,"description":1722,"path":1723,"stem":1724,"children":1725,"page":-1},"Threat Report","The residual-risk report over a threat model: reading it, filtering it and exporting it.","\u002Fthreat-report","04.threat-report",[1726,1729,1734,1739,1744,1749],{"title":1721,"path":1723,"stem":1727,"description":1728},"04.threat-report\u002Findex","Read, filter, drill into, and export a residual-risk report over a threat model",{"title":1730,"path":1731,"stem":1732,"description":1733},"Getting Started with the Threat Report","\u002Fthreat-report\u002Fgetting-started","04.threat-report\u002F01.getting-started","Generate, open, refresh, and export a threat report over a model",{"title":1735,"path":1736,"stem":1737,"description":1738},"Reading the Report","\u002Fthreat-report\u002Freading-the-report","04.threat-report\u002F02.reading-the-report","Navigating the report, the shared visual language, and the Posture and Boundary Crossings views",{"title":1740,"path":1741,"stem":1742,"description":1743},"Understanding Coverage and Gaps","\u002Fthreat-report\u002Funderstanding-coverage","04.threat-report\u002F03.understanding-coverage","Reading the MITRE ATT&CK coverage matrix: tiers, prevent vs detect, off-grid notes, and what coverage does and does not mean",{"title":1745,"path":1746,"stem":1747,"description":1748},"Reachability and Flow Routes","\u002Fthreat-report\u002Freachability","04.threat-report\u002F04.reachability","Exploring flow routes to crown-jewel assets and between any two elements — and what the analysis does and does not model",{"title":1750,"path":1751,"stem":1752,"description":1753},"Working with Findings","\u002Fthreat-report\u002Fworking-with-findings","04.threat-report\u002F05.working-with-findings","The Residual Risk ledger, triaging findings, filtering, and the per-element Component Profile",{"title":1755,"description":1756,"path":1757,"stem":1758,"children":1759,"page":-1},"Risk assessment","The risk assessment module: the register, the reports and the method behind them.","\u002Frisk-assessment","05.risk-assessment",[1760,1764,1769,1774,1779,1784,1788,1793],{"title":1761,"path":1757,"stem":1762,"description":1763},"Dethernety Risk Assessment User Guide","05.risk-assessment\u002Findex","Dethernety Risk Assessment turns a threat model you have built on the Dethernety platform into a grounded, board-ready draft risk report. From one point-in-time assessment of your model you get a prioritized worklist, a likelihood × impact risk matrix, a security-coverage posture, ten kinds of finding, a management risk register your team authors and maintains, and audience-tiered stakeholder reports — Board, Risk Committee, and Technical — plus machine-readable data exports.",{"title":1765,"path":1766,"stem":1767,"description":1768},"FAQ and Troubleshooting","\u002Frisk-assessment\u002Ffaq","05.risk-assessment\u002F01.faq","Short answers to the questions analysts, risk managers, and compliance officers ask most often about the Risk Assessment. Each answer links to the guide that covers it in full.",{"title":1770,"path":1771,"stem":1772,"description":1773},"Findings","\u002Frisk-assessment\u002Ffindings","05.risk-assessment\u002F02.findings","A finding is a specific observation the Risk Assessment makes about your threat model. Every finding is grounded in something concrete you have declared — an element, a data flow, a trust zone, a crown jewel — and it points you at a place worth a closer look. This guide is the reference to open when you see a finding and want to know what it means and what to do about it.",{"title":1775,"path":1776,"stem":1777,"description":1778},"Getting Started","\u002Frisk-assessment\u002Fgetting-started","05.risk-assessment\u002F03.getting-started","Risk Assessment turns a threat model you have built on the Dethernety platform into a grounded, board-ready draft risk report — a prioritized worklist, a likelihood × impact matrix, a security-coverage posture, ten kinds of finding, a risk register your team authors, and audience-tiered stakeholder reports and exports.",{"title":1780,"path":1781,"stem":1782,"description":1783},"Methodology and Trust","\u002Frisk-assessment\u002Fmethodology-and-trust","05.risk-assessment\u002F04.methodology-and-trust","Every number in a Risk Assessment is meant to survive scrutiny. This chapter explains why you can trust the report and — just as importantly — what it deliberately declines to claim, so you can put it in front of your board, a regulator, or an external auditor and defend every line.",{"title":1735,"path":1785,"stem":1786,"description":1787},"\u002Frisk-assessment\u002Freading-the-report","05.risk-assessment\u002F05.reading-the-report","The Risk Assessment turns your threat model into a single, scannable draft risk report: an executive summary at the top and a set of analytical tabs below it. This guide explains how to read what you see — what a matrix cell means, how coverage is stated, what a severity band is (and is not), and how to interpret each tab.",{"title":1789,"path":1790,"stem":1791,"description":1792},"Stakeholder Reports and Exports","\u002Frisk-assessment\u002Fstakeholder-reports","05.risk-assessment\u002F06.stakeholder-reports","One assessment produces reporting for every audience you answer to. From a single generated Risk Assessment you can hand your board a one-page brief, give your risk committee the full reconciliation, keep the complete technical detail for your own team, and export the underlying data into your GRC tool — without ever re-running anything or reconciling one document against another.",{"title":1794,"path":1795,"stem":1796,"description":1797},"The Risk Register","\u002Frisk-assessment\u002Fthe-risk-register","05.risk-assessment\u002F07.the-risk-register","The Risk Register is where your team records and manages the real risks your organisation is carrying — on top of, but separate from, what the analysis computed for you. Each entry is written by a person: a plain-language risk statement, your own assessment of how likely it is and how much it would hurt, the findings and elements from the analysis that back it up, a treatment decision, an owner, a review date, and a reference handle you can quote in a ticket or a board pack.",{"title":1799,"description":1800,"path":1801,"stem":1802,"children":1803,"page":-1},"Threat Patterns","The Threat Patterns module and its modelling checklist.","\u002Fthreat-patterns","06.threat-patterns",[1804,1808],{"title":1805,"path":1801,"stem":1806,"description":1807},"Threat Patterns User Guide","06.threat-patterns\u002Findex","Threat Patterns finds threats in your model that no single element shows on its own. Each one appears only when several elements line up. For example, an agent may read content anyone can write, hold private data, and be able to send data where an outsider reads it. Each element can look acceptable alone, but together they form a path an attacker can use.",{"title":1809,"path":1810,"stem":1811,"description":1812},"Modelling Checklist","\u002Fthreat-patterns\u002Fmodelling-checklist","06.threat-patterns\u002F01.modelling-checklist","Threat Patterns decides a leg only from what your model states. An unanswered attribute or field is undetermined, never read as \"no\". This checklist lists the facts and drawings the analysis asks for most often. For each one it says where to set it and which leg it settles. Attribute names are shown as they appear on the class, in code.",{"title":1814,"description":1815,"path":1816,"stem":1817,"children":1818,"page":-1},"Agentic modelling","A hands-on training: model one agentic system step by step, with Threat Patterns after each step.","\u002Fagentic-modelling","07.agentic-modelling",[1819,1823,1828,1833,1838,1843,1848,1853,1858,1863,1868,1873,1878],{"title":1820,"path":1816,"stem":1821,"description":1822},"Model an Agentic Architecture","07.agentic-modelling\u002Findex","A hands-on training in modelling systems that run AI agents, so that Threat Patterns can analyse them. You build one system, a fictional customer-support copilot, in eleven short lessons. Each lesson adds one thing to the model, and you run Threat Patterns after each one to see what the change did.",{"title":1824,"path":1825,"stem":1826,"description":1827},"Lesson 1: Draw the Agent and What It Talks To","\u002Fagentic-modelling\u002F01-draw-the-agent","07.agentic-modelling\u002F01.01-draw-the-agent","Training overview · Lesson 1 of 11 · Next: Say what data moves",{"title":1829,"path":1830,"stem":1831,"description":1832},"Lesson 2: Say What Data Moves","\u002Fagentic-modelling\u002F02-say-what-data-moves","07.agentic-modelling\u002F02.02-say-what-data-moves","Training overview · Lesson 2 of 11 · Previous: Draw the agent · Next: Mark who is outside",{"title":1834,"path":1835,"stem":1836,"description":1837},"Lesson 3: Mark Who Is Outside","\u002Fagentic-modelling\u002F03-mark-who-is-outside","07.agentic-modelling\u002F03.03-mark-who-is-outside","Training overview · Lesson 3 of 11 · Previous: Say what data moves · Next: Draw a tool that reaches any host",{"title":1839,"path":1840,"stem":1841,"description":1842},"Lesson 4: Draw a Tool That Reaches Any Host","\u002Fagentic-modelling\u002F04-draw-a-tool-that-reaches-any-host","07.agentic-modelling\u002F04.04-draw-a-tool-that-reaches-any-host","Training overview · Lesson 4 of 11 · Previous: Mark who is outside · Next: State what the agent can do",{"title":1844,"path":1845,"stem":1846,"description":1847},"Lesson 5: State What the Agent Can Do","\u002Fagentic-modelling\u002F05-state-what-the-agent-can-do","07.agentic-modelling\u002F05.05-state-what-the-agent-can-do","Training overview · Lesson 5 of 11 · Previous: Draw a tool that reaches any host · Next: Fix a finding with a fact",{"title":1849,"path":1850,"stem":1851,"description":1852},"Lesson 6: Fix a Finding With a Fact","\u002Fagentic-modelling\u002F06-fix-a-finding-with-a-fact","07.agentic-modelling\u002F06.06-fix-a-finding-with-a-fact","Training overview · Lesson 6 of 11 · Previous: State what the agent can do · Next: Record a compensating control",{"title":1854,"path":1855,"stem":1856,"description":1857},"Lesson 7: Record a Compensating Control","\u002Fagentic-modelling\u002F07-record-a-compensating-control","07.agentic-modelling\u002F07.07-record-a-compensating-control","Training overview · Lesson 7 of 11 · Previous: Fix a finding with a fact · Next: Leave what you don't know open",{"title":1859,"path":1860,"stem":1861,"description":1862},"Lesson 8: Leave What You Don't Know Open","\u002Fagentic-modelling\u002F08-leave-unknowns-open","07.agentic-modelling\u002F08.08-leave-unknowns-open","Training overview · Lesson 8 of 11 · Previous: Record a compensating control · Next: Follow a credential",{"title":1864,"path":1865,"stem":1866,"description":1867},"Lesson 9: Follow a Credential","\u002Fagentic-modelling\u002F09-follow-a-credential","07.agentic-modelling\u002F09.09-follow-a-credential","Training overview · Lesson 9 of 11 · Previous: Leave what you don't know open · Next: Watch what gets into knowledge and memory",{"title":1869,"path":1870,"stem":1871,"description":1872},"Lesson 10: Watch What Gets Into Knowledge and Memory","\u002Fagentic-modelling\u002F10-what-gets-in","07.agentic-modelling\u002F10.10-what-gets-in","Training overview · Lesson 10 of 11 · Previous: Follow a credential · Next: Draw tools from others and hand-offs",{"title":1874,"path":1875,"stem":1876,"description":1877},"Lesson 11: Draw Tools From Others and Hand-offs","\u002Fagentic-modelling\u002F11-tools-and-handoffs","07.agentic-modelling\u002F11.11-tools-and-handoffs","Training overview · Lesson 11 of 11 · Previous: Watch what gets into knowledge and memory",{"title":1879,"path":1880,"stem":1881,"description":1882},"The recipe at a glance","\u002Fagentic-modelling\u002Frecipe-at-a-glance","07.agentic-modelling\u002F12.recipe-at-a-glance","The ten steps of the training on one page. Each lesson teaches one or two of them.",{"title":1884,"description":1885,"path":1886,"stem":1887,"children":1888,"page":-1},"BYODt subscription","Subscribing on the BYODt Portal, and moving a deployment you already run to a new team.","\u002Fbyodt-subscription","08.byodt-subscription",[1889,1893,1898],{"title":1890,"path":1886,"stem":1891,"description":1892},"BYODt Subscription","08.byodt-subscription\u002Findex","Buy content for the deployment you run yourself, and decide where that deployment goes when you buy a team edition",{"title":1894,"path":1895,"stem":1896,"description":1897},"Your Subscription","\u002Fbyodt-subscription\u002Fyour-subscription","08.byodt-subscription\u002F01.your-subscription","Create an account, subscribe by card, and find the values your deployment needs on the portal",{"title":1899,"path":1900,"stem":1901,"description":1902},"Moving a Deployment to a New Team","\u002Fbyodt-subscription\u002Fmoving-a-deployment-to-a-new-team","08.byodt-subscription\u002F02.moving-a-deployment-to-a-new-team","What to do with the deployment you already run once you buy a team edition: three ways forward, best first",1793748184840]