[{"data":1,"prerenderedAt":507},["ShallowReactive",2],{"cycle-doc-design-c121-plan\u002F04-findings.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":17},{"id":5,"title":6},"c121","Governance v1 Scope",{"id":8,"label":9},"design","Design","plan\u002F04-findings.md","04 · Findings listing (S2) + finding detail (S1) (Wave 2)",[13,14,15,16],"Today","Steps","Done when","Look for (review)",{"type":18,"children":19},"root",[20,62,96,102,234,239,459,464,497,502],{"type":21,"tag":22,"props":23,"children":24},"element","p",{},[25,32,34,39,41,46,48,53,55,60],{"type":21,"tag":26,"props":27,"children":28},"strong",{},[29],{"type":30,"value":31},"text","TL;DR:",{"type":30,"value":33}," \"Not enforced\" becomes ",{"type":21,"tag":26,"props":35,"children":36},{},[37],{"type":30,"value":38},"Observed",{"type":30,"value":40},"; Observed is ",{"type":21,"tag":26,"props":42,"children":43},{},[44],{"type":30,"value":45},"hidden by default",{"type":30,"value":47}," with a one-click way in and an honest zero state (D3); add ",{"type":21,"tag":26,"props":49,"children":50},{},[51],{"type":30,"value":52},"severity",{"type":30,"value":54},"; consolidate the filters into one bar; the snoozed line goes. Resolve ",{"type":21,"tag":26,"props":56,"children":57},{},[58],{"type":30,"value":59},"records a decision",{"type":30,"value":61}," — reason + text, no inline exception, a follow-on link (S, D10). History marks manual vs re-evaluation; findings show their Policy Config version at detection.",{"type":21,"tag":22,"props":63,"children":64},{},[65,70,72,79,81,87,88,94],{"type":21,"tag":26,"props":66,"children":67},{},[68],{"type":30,"value":69},"Owns:",{"type":30,"value":71}," ",{"type":21,"tag":73,"props":74,"children":76},"code",{"className":75},[],[77],{"type":30,"value":78},"app\u002Fpages\u002Fpages\u002Fphase4\u002Fmock\u002F{findings,finding-detail}.vue",{"type":30,"value":80},", ",{"type":21,"tag":73,"props":82,"children":84},{"className":83},[],[85],{"type":30,"value":86},"app\u002Fcomponents\u002Fgovernance\u002Fpart\u002F{FindingsTable,FindingHistory,FindingDetails}.vue",{"type":30,"value":80},{"type":21,"tag":73,"props":89,"children":91},{"className":90},[],[92],{"type":30,"value":93},"app\u002Fcomponents\u002Fgovernance\u002Fmock\u002FResolveCapture.vue",{"type":30,"value":95},".",{"type":21,"tag":97,"props":98,"children":100},"h2",{"id":99},"today",[101],{"type":30,"value":13},{"type":21,"tag":103,"props":104,"children":105},"ul",{},[106,166,177,196,215],{"type":21,"tag":107,"props":108,"children":109},"li",{},[110,116,118,124,126,132,134,140,142,148,150,156,158,164],{"type":21,"tag":73,"props":111,"children":113},{"className":112},[],[114],{"type":30,"value":115},"findings.vue",{"type":30,"value":117}," filters: status Open\u002FResolved ",{"type":21,"tag":73,"props":119,"children":121},{"className":120},[],[122],{"type":30,"value":123},"?status=",{"type":30,"value":125}," (l.13–18), framework chips ",{"type":21,"tag":73,"props":127,"children":129},{"className":128},[],[130],{"type":30,"value":131},"?fw=",{"type":30,"value":133}," (l.20–25), policy\u002Fteam chips (l.26–27), column search ",{"type":21,"tag":73,"props":135,"children":137},{"className":136},[],[138],{"type":30,"value":139},"?q=",{"type":30,"value":141},", group\u002Findividual ",{"type":21,"tag":73,"props":143,"children":145},{"className":144},[],[146],{"type":30,"value":147},"?view=",{"type":30,"value":149},", enforcement FilterTriggerBar All · Enforced · \"Not enforced (N)\" ",{"type":21,"tag":73,"props":151,"children":153},{"className":152},[],[154],{"type":30,"value":155},"?ne=",{"type":30,"value":157}," (l.34–40), clear; variant ",{"type":21,"tag":73,"props":159,"children":161},{"className":160},[],[162],{"type":30,"value":163},"?v.observe=tagged|hidden|preview",{"type":30,"value":165}," (l.220–233); snoozed amber lines (l.45–50, l.304). No severity filter (sorter only, l.69).",{"type":21,"tag":107,"props":167,"children":168},{},[169,175],{"type":21,"tag":73,"props":170,"children":172},{"className":171},[],[173],{"type":30,"value":174},"FindingsTable.vue",{"type":30,"value":176}," mode tags incl. \"snoozed\" (l.24, l.135–139), group mode line (l.88), \"policy v{n}\" (l.89), resolve card (l.72–82), lifecycle (l.91–100).",{"type":21,"tag":107,"props":178,"children":179},{},[180,186,188,194],{"type":21,"tag":73,"props":181,"children":183},{"className":182},[],[184],{"type":30,"value":185},"ResolveCapture.vue",{"type":30,"value":187},": reasons (fixture ",{"type":21,"tag":73,"props":189,"children":191},{"className":190},[],[192],{"type":30,"value":193},"RESOLVE_REASONS",{"type":30,"value":195},"), text required for Other; optional inline Off exception with until (l.19–33); done message (l.106–114).",{"type":21,"tag":107,"props":197,"children":198},{},[199,205,207,213],{"type":21,"tag":73,"props":200,"children":202},{"className":201},[],[203],{"type":30,"value":204},"finding-detail.vue",{"type":30,"value":206},": Resolve + \"Too noisy? Quiet the policy →\" (l.23–24); ",{"type":21,"tag":73,"props":208,"children":210},{"className":209},[],[211],{"type":30,"value":212},"?v.resolve=reasons|exception",{"type":30,"value":214}," (l.94–98).",{"type":21,"tag":107,"props":216,"children":217},{},[218,224,226,232],{"type":21,"tag":73,"props":219,"children":221},{"className":220},[],[222],{"type":30,"value":223},"FindingHistory.vue",{"type":30,"value":225},": actor = person vs ",{"type":21,"tag":73,"props":227,"children":229},{"className":228},[],[230],{"type":30,"value":231},"qdash",{"type":30,"value":233},", no explicit kind.",{"type":21,"tag":97,"props":235,"children":237},{"id":236},"steps",[238],{"type":30,"value":14},{"type":21,"tag":240,"props":241,"children":242},"ol",{},[243,349,375,385,418,449],{"type":21,"tag":107,"props":244,"children":245},{},[246,251,253,259,261,266,268,273,275,281,283,288,290,296,297,302,304,309,311,316,318,323,325,331,333,339,341,347],{"type":21,"tag":26,"props":247,"children":248},{},[249],{"type":30,"value":250},"One filter bar",{"type":30,"value":252}," (L: \"too many filters, consolidate\"). Assemble from the layer's ",{"type":21,"tag":73,"props":254,"children":256},{"className":255},[],[257],{"type":30,"value":258},"DataListingBar",{"type":30,"value":260}," (c95: FilterTriggerBar + column picker) if it fits: ",{"type":21,"tag":26,"props":262,"children":263},{},[264],{"type":30,"value":265},"Status",{"type":30,"value":267}," (Open · Resolved) · ",{"type":21,"tag":26,"props":269,"children":270},{},[271],{"type":30,"value":272},"Outcome",{"type":30,"value":274}," (Enforced · Observed · All, default Enforced; ",{"type":21,"tag":73,"props":276,"children":278},{"className":277},[],[279],{"type":30,"value":280},"?outcome=",{"type":30,"value":282},") · ",{"type":21,"tag":26,"props":284,"children":285},{},[286],{"type":30,"value":287},"Severity",{"type":30,"value":289}," (multi; ",{"type":21,"tag":73,"props":291,"children":293},{"className":292},[],[294],{"type":30,"value":295},"?sev=",{"type":30,"value":282},{"type":21,"tag":26,"props":298,"children":299},{},[300],{"type":30,"value":301},"Framework",{"type":30,"value":303}," (",{"type":21,"tag":73,"props":305,"children":307},{"className":306},[],[308],{"type":30,"value":131},{"type":30,"value":310},"). Policy and team stay as removable chips from deep links only. Group\u002FIndividual moves to the bar's right edge. Keep ",{"type":21,"tag":73,"props":312,"children":314},{"className":313},[],[315],{"type":30,"value":139},{"type":30,"value":317}," in the column header. Drop ",{"type":21,"tag":73,"props":319,"children":321},{"className":320},[],[322],{"type":30,"value":155},{"type":30,"value":324}," and the ",{"type":21,"tag":73,"props":326,"children":328},{"className":327},[],[329],{"type":30,"value":330},"?v.observe=",{"type":30,"value":332}," variants (map old ",{"type":21,"tag":73,"props":334,"children":336},{"className":335},[],[337],{"type":30,"value":338},"?ne=show|only",{"type":30,"value":340}," to ",{"type":21,"tag":73,"props":342,"children":344},{"className":343},[],[345],{"type":30,"value":346},"outcome=all|observed",{"type":30,"value":348}," for old links).",{"type":21,"tag":107,"props":350,"children":351},{},[352,357,359,365,367,373],{"type":21,"tag":26,"props":353,"children":354},{},[355],{"type":30,"value":356},"Observed hidden by default (D3).",{"type":30,"value":358}," Bar shows \"Observed (N)\" count even when excluded. Zero state when the filtered result is empty: \"No enforced findings match. 12 Observed findings are hidden — show them\" (use the layer's ",{"type":21,"tag":73,"props":360,"children":362},{"className":361},[],[363],{"type":30,"value":364},"FilterNoMatches",{"type":30,"value":366}," \u002F ",{"type":21,"tag":73,"props":368,"children":370},{"className":369},[],[371],{"type":30,"value":372},"StateEmpty",{"type":30,"value":374}," pattern). Framework zero state \"Nothing open against ISO 27001\" reads as good news (R: audit-ready view).",{"type":21,"tag":107,"props":376,"children":377},{},[378,383],{"type":21,"tag":26,"props":379,"children":380},{},[381],{"type":30,"value":382},"Rename.",{"type":30,"value":384}," Every \"Not enforced\" → \"Observed\"; \"Enforced\" only when actually blocked (labels come from 00's rows file). Remove \"snoozed\" tags and the snoozed lines; group mode line shows \"Observe · until Nov 15\" instead.",{"type":21,"tag":107,"props":386,"children":387},{},[388,393,395,401,403,409,411,417],{"type":21,"tag":26,"props":389,"children":390},{},[391],{"type":30,"value":392},"Resolve (S, I).",{"type":30,"value":394}," ResolveCapture: reasons False positive · By design · Security testing · Other + explanation; remove the inline exception block and ",{"type":21,"tag":73,"props":396,"children":398},{"className":397},[],[399],{"type":30,"value":400},"?v.resolve=exception",{"type":30,"value":402},". After resolving: \"Resolved as By design. The policy didn't change.\" + link \"Change this policy or add an exception →\" to S3 ",{"type":21,"tag":73,"props":404,"children":406},{"className":405},[],[407],{"type":30,"value":408},"?policy=\u003Cid>&add=user:\u003Csubject>#exceptions",{"type":30,"value":410}," (D10). Replace \"Too noisy? Quiet the policy →\" with the same link pattern pointing at ",{"type":21,"tag":73,"props":412,"children":414},{"className":413},[],[415],{"type":30,"value":416},"#mode",{"type":30,"value":95},{"type":21,"tag":107,"props":419,"children":420},{},[421,426,428,433,435,440,442,447],{"type":21,"tag":26,"props":422,"children":423},{},[424],{"type":30,"value":425},"History.",{"type":30,"value":427}," A small kind marker per event: ",{"type":21,"tag":26,"props":429,"children":430},{},[431],{"type":30,"value":432},"Manual",{"type":30,"value":434}," (person) vs ",{"type":21,"tag":26,"props":436,"children":437},{},[438],{"type":30,"value":439},"Re-evaluation",{"type":30,"value":441}," (system, with the Policy Config version that caused it, linking to Changes) vs ",{"type":21,"tag":26,"props":443,"children":444},{},[445],{"type":30,"value":446},"System",{"type":30,"value":448}," (Until passed). Same in the S2 card lifecycle.",{"type":21,"tag":107,"props":450,"children":451},{},[452,457],{"type":21,"tag":26,"props":453,"children":454},{},[455],{"type":30,"value":456},"Config version.",{"type":30,"value":458}," \"Policy Config v12 at detection\" in FindingDetails and the S2 card (replaces \"policy v{n}\").",{"type":21,"tag":97,"props":460,"children":462},{"id":461},"done-when",[463],{"type":30,"value":15},{"type":21,"tag":22,"props":465,"children":466},{},[467,473,475,481,482,488,490,496],{"type":21,"tag":73,"props":468,"children":470},{"className":469},[],[471],{"type":30,"value":472},"\u002Fpages\u002Fphase4\u002Fmock\u002Ffindings",{"type":30,"value":474}," default (enforced only), ",{"type":21,"tag":73,"props":476,"children":478},{"className":477},[],[479],{"type":30,"value":480},"?outcome=all",{"type":30,"value":80},{"type":21,"tag":73,"props":483,"children":485},{"className":484},[],[486],{"type":30,"value":487},"?sev=critical",{"type":30,"value":489},", framework zero state, a finding resolved with each reason, history with all three kinds. Screenshots ",{"type":21,"tag":73,"props":491,"children":493},{"className":492},[],[494],{"type":30,"value":495},"shots\u002F04-*.png",{"type":30,"value":95},{"type":21,"tag":97,"props":498,"children":500},{"id":499},"look-for-review",[501],{"type":30,"value":16},{"type":21,"tag":22,"props":503,"children":504},{},[505],{"type":30,"value":506},"Is the bar fewer things than today? Can you tell in one glance that Observed findings exist but are hidden?",1794599472417]