PageSourceSearch

https://www.azuma.health/assets/js/df0e6779.da880839.js

js azuma.health collected 2026-09-28 07:52:43 UTC 8,342 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkazuma_website=self.webpackChunkazuma_website||[]).push([["9322"],{5371(e,n,r){r.r(n),r.d(n,{metadata:()=>i,default:()=>h,frontMatter:()=>o,contentTitle:()=>a,toc:()=>d,assets:()=>l});var i=JSON.parse('{"id":"products/nori/review_results","title":"Review Results","description":"After a run completes, open it from the Analysis History table (click Details) to","source":"@site/technical-docs/products/nori/review_results.md","sourceDirName":"products/nori","slug":"/products/nori/review_results","permalink":"/tech/products/nori/review_results","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":6,"frontMatter":{"sidebar_position":6},"sidebar":"technicalSidebar","previous":{"title":"External Evidence","permalink":"/tech/products/nori/external_evidence"},"next":{"title":"Comments & Change History","permalink":"/tech/products/nori/collaborate_on_findings"}}'),s=r(4848),t=r(8453);let o={sidebar_position:6},a="Review Results",l={},d=[{value:"Run overview",id:"run-overview",level:2},{value:"Per-control findings",id:"per-control-findings",level:2},{value:"Working with a finding",id:"working-with-a-finding",level:3},{value:"Scores",id:"scores",level:3},{value:"Export",id:"export",level:2},{value:"Discussing and overriding a result",id:"discussing-and-overriding-a-result",level:2}];function c(e){let n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"review-results",children:"Review Results"})}),"\n",(0,s.jsxs)(n.p,{children:["After a run completes, open it from the ",(0,s.jsx)(n.strong,{children:"Analysis History"})," table (click ",(0,s.jsx)(n.strong,{children:"Details"}),") to\nreview the verdict."]}),"\n",(0,s.jsx)(n.h2,{id:"run-overview",children:"Run overview"}),"\n",(0,s.jsxs)(n.p,{children:["The run summary shows the ",(0,s.jsx)(n.strong,{children:"Overall"})," score together with run metadata: ",(0,s.jsx)(n.strong,{children:"Model"}),",\n",(0,s.jsx)(n.strong,{children:"Commit"}),", ",(0,s.jsx)(n.strong,{children:"Branch"}),", ",(0,s.jsx)(n.strong,{children:"Execution Time"}),", and ",(0,s.jsx)(n.strong,{children:"Total Tokens"}),". When enabled, an\n",(0,s.jsx)(n.strong,{children:"Executive Summary"})," and ",(0,s.jsx)(n.strong,{children:"Key Policy Insights"})," give you a high-level read before you dive\ninto individual controls."]}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Analysis History"})," table lists each run with its ",(0,s.jsx)(n.strong,{children:"Run ID"}),", ",(0,s.jsx)(n.strong,{children:"Git Ref"}),", ",(0,s.jsx)(n.strong,{children:"Execution\nTime"}),", ",(0,s.jsx)(n.strong,{children:"Status"}),", ",(0,s.jsx)(n.strong,{children:"Controls"}),", and ",(0,s.jsx)(n.strong,{children:"Score"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"per-control-findings",children:"Per-control findings"}),"\n",(0,s.jsxs)(n.p,{children:["The controls table shows each ",(0,s.jsx)(n.strong,{children:"Control"}),", its ",(0,s.jsx)(n.strong,{children:"Status"}),", ",(0,s.jsx)(n.strong,{children:"Metrics"}),", and ",(0,s.jsx)(n.strong,{children:"Score"}),". Status\nvalues include ",(0,s.jsx)(n.code,{children:"Pass"}),", ",(0,s.jsx)(n.code,{children:"Fail"}),", ",(0,s.jsx)(n.code,{children:"Pending"}),", ",(0,s.jsx)(n.code,{children:"Executing"}),", ",(0,s.jsx)(n.code,{children:"Blocked"}),", and ",(0,s.jsx)(n.code,{children:"Error"}),". Use the\nsearch box (",(0,s.jsx)(n.em,{children:'"Search by ID or title\u2026"'}),") or ",(0,s.jsx)(n.strong,{children:"Filter Passed"})," to focus on what needs\nattention."]}),"\n",(0,s.jsxs)(n.p,{children:["Open a control's ",(0,s.jsx)(n.strong,{children:"Details"})," to see its ",(0,s.jsx)(n.strong,{children:"Control Findings"}),", grouped by severity:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Critical Findings"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Potential Findings"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Informational Observations"})}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Evaluation Deep-Dive & Evidence"})," section traces each verdict back to the concrete\nevidence \u2014 the files and line references the sub-agent used to reach its decision."]}),"\n",(0,s.jsx)(n.h3,{id:"working-with-a-finding",children:"Working with a finding"}),"\n",(0,s.jsx)(n.p,{children:"Each finding carries three actions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Copy its location"})," \u2014 a copy button beside the location puts ",(0,s.jsx)(n.code,{children:"path:line"})," on your clipboard,\nready to paste into your editor. A finding that reports something as ",(0,s.jsx)(n.em,{children:"missing"})," copies just the\npath, since there is no line to jump to."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Copy fix prompt"})," \u2014 puts a complete, self-contained remediation request on your clipboard:\nthe control, the standard, the severity, the location and the cited code. Paste it into an AI\nassistant without having to explain the context first."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Re-scan this control"})," \u2014 re-evaluates that one control against your current code, so you can\ncheck a fix without re-running the whole analysis. It always performs a genuine re-evaluation,\neven when ",(0,s.jsx)(n.em,{children:"Skip Existing (Analysis)"})," is on for the project, and it creates a ",(0,s.jsx)(n.strong,{children:"new"})," run rather\nthan overwriting the one you are looking at \u2014 the earlier result stays on record."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Finding descriptions are rendered as formatted text, so code references, lists and emphasis appear\nthe way the analysis wrote them."}),"\n",(0,s.jsx)(n.h3,{id:"scores",children:"Scores"}),"\n",(0,s.jsxs)(n.p,{children:["Scores are on a ",(0,s.jsx)(n.strong,{children:"0\u2013100"})," scale. The app shows them as a percentage and the regulatory report\nwrites them as ",(0,s.jsx)(n.code,{children:"/100"}),". A control that carries no score \u2014 not applicable, disputed, or never graded\n\u2014 shows a dash rather than a zero, so an ungraded control is never mistaken for a failing one."]}),"\n",(0,s.jsx)(n.h2,{id:"export",children:"Export"}),"\n",(0,s.jsxs)(n.p,{children:["From a run you can ",(0,s.jsx)(n.strong,{children:"Export PDF"})," for a shareable report, or open ",(0,s.jsx)(n.strong,{children:"View Deep Dive &\
1nEvidence"})," for the full per-control breakdown."]}),"\n",(0,s.jsx)(n.h2,{id:"discussing-and-overriding-a-result",children:"Discussing and overriding a result"}),"\n",(0,s.jsxs)(n.p,{children:["Controls and individual findings carry a comment thread and an attributed change history, so a\ndisputed finding can be talked through in place and a status override is always traceable to whoever\nmade it. See ",(0,s.jsx)(n.a,{href:"./collaborate_on_findings",children:"Comments & Change History"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["If a result is wrong in a way you would like fixed rather than merely recorded, use\n",(0,s.jsx)(n.a,{href:"./share_feedback",children:"Share Feedback"}),"."]}),"\n",(0,s.jsx)(n.admonition,{title:"Iterating",type:"tip",children:(0,s.jsxs)(n.p,{children:["Fix the flagged findings in your code, then start another run with ",(0,s.jsx)(n.strong,{children:"Run New Analysis"}),".\nEnable ",(0,s.jsx)(n.strong,{children:"Skip Existing (Analysis)"})," to resume quickly by re-evaluating only what changed.\nSee ",(0,s.jsx)(n.a,{href:"./run_analysis",children:"Run an Analysis"}),"."]})})]})}function h(e={}){let{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},8453(e,n,r){r.d(n,{R:()=>o,x:()=>a});var i=r(6540);let s={},t=i.createContext(s);function o(e){let n=i.useContext(t);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.