<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 15">
<meta name=Originator content="Microsoft Word 15">
<link rel=File-List href="LeanKG_v2_PRD.fld/filelist.xml">
<link rel=themeData href="LeanKG_v2_PRD.fld/themedata.thmx">
<link rel=colorSchemeMapping href="LeanKG_v2_PRD.fld/colorschememapping.xml">
<style>
<!--
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-536870145 1107305727 0 0 415 0;}
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Arial",sans-serif;
mso-fareast-font-family:Arial;}
h1
{mso-style-priority:9;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:20.0pt;
margin-right:0cm;
margin-bottom:8.0pt;
margin-left:0cm;
mso-pagination:widow-orphan;
mso-outline-level:1;
font-size:16.0pt;
font-family:"Arial",sans-serif;
color:#1B4F72;
mso-font-kerning:0pt;}
h2
{mso-style-priority:9;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:16.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
mso-pagination:widow-orphan;
mso-outline-level:2;
font-size:13.0pt;
font-family:"Arial",sans-serif;
color:#2E86C1;}
h3
{mso-style-priority:9;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:4.0pt;
margin-left:0cm;
mso-pagination:widow-orphan;
mso-outline-level:3;
font-size:12.0pt;
font-family:"Arial",sans-serif;
color:#2C3E50;}
h4
{mso-style-noshow:yes;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:10.0pt;
margin-right:0cm;
margin-bottom:3.0pt;
margin-left:0cm;
mso-pagination:widow-orphan;
mso-outline-level:4;
font-size:11.0pt;
font-family:"Arial",sans-serif;
color:#566573;}
h5
{mso-style-noshow:yes;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
mso-pagination:widow-orphan;
mso-outline-level:5;
font-size:11.0pt;
font-family:"Arial",sans-serif;
color:#2E74B5;
font-weight:normal;}
h6
{mso-style-noshow:yes;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
mso-pagination:widow-orphan;
mso-outline-level:6;
font-size:11.0pt;
font-family:"Arial",sans-serif;
color:#1F4D78;
font-weight:normal;}
p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
{mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-style-link:"Footnote Text Char";
margin:0cm;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Arial",sans-serif;
mso-fareast-font-family:Arial;}
span.MsoFootnoteReference
{mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
vertical-align:super;}
span.MsoEndnoteReference
{mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
vertical-align:super;}
p.MsoEndnoteText, li.MsoEndnoteText, div.MsoEndnoteText
{mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-style-link:"Endnote Text Char";
margin:0cm;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Arial",sans-serif;
mso-fareast-font-family:Arial;}
p.MsoTitle, li.MsoTitle, div.MsoTitle
{mso-style-priority:10;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
mso-pagination:widow-orphan;
font-size:28.0pt;
font-family:"Arial",sans-serif;
mso-fareast-font-family:Arial;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
mso-style-parent:"";
color:#0563C1;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-noshow:yes;
mso-style-priority:99;
color:#96607D;
mso-themecolor:followedhyperlink;
text-decoration:underline;
text-underline:single;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Arial",sans-serif;
mso-fareast-font-family:Arial;}
p.Strong1, li.Strong1, div.Strong1
{mso-style-name:Strong1;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Arial",sans-serif;
mso-fareast-font-family:Arial;
font-weight:bold;}
span.FootnoteTextChar
{mso-style-name:"Footnote Text Char";
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Footnote Text";
mso-ansi-font-size:10.0pt;
mso-bidi-font-size:10.0pt;}
span.EndnoteTextChar
{mso-style-name:"Endnote Text Char";
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Endnote Text";
mso-ansi-font-size:10.0pt;
mso-bidi-font-size:10.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-size:11.0pt;
mso-ansi-font-size:11.0pt;
mso-bidi-font-size:11.0pt;
font-family:"Arial",sans-serif;
mso-ascii-font-family:Arial;
mso-fareast-font-family:Arial;
mso-hansi-font-family:Arial;
mso-bidi-font-family:Arial;
mso-font-kerning:0pt;
mso-ligatures:none;}
@page
{mso-footnote-separator:url("LeanKG_v2_PRD.fld/header.html") fs;
mso-footnote-continuation-separator:url("LeanKG_v2_PRD.fld/header.html") fcs;
mso-endnote-separator:url("LeanKG_v2_PRD.fld/header.html") es;
mso-endnote-continuation-separator:url("LeanKG_v2_PRD.fld/header.html") ecs;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:54.0pt 54.0pt 54.0pt 54.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-header:url("LeanKG_v2_PRD.fld/header.html") h1;
mso-footer:url("LeanKG_v2_PRD.fld/header.html") f1;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
@list l0
{mso-list-id:374306839;
mso-list-type:hybrid;
mso-list-template-ids:-1394960048 669296590 199672800 439893998 -319252316 1203527644 -66787010 -1287328662 1163833686 -575500608;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:•;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:◦;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:54.0pt;
text-indent:-18.0pt;}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:▪;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:72.0pt;
text-indent:-18.0pt;}
@list l0:level4
{mso-level-start-at:0;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0cm;
text-indent:0cm;}
@list l0:level5
{mso-level-start-at:0;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0cm;
text-indent:0cm;}
@list l0:level6
{mso-level-start-at:0;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0cm;
text-indent:0cm;}
@list l0:level7
{mso-level-start-at:0;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0cm;
text-indent:0cm;}
@list l0:level8
{mso-level-start-at:0;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0cm;
text-indent:0cm;}
@list l0:level9
{mso-level-start-at:0;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0cm;
text-indent:0cm;}
@list l1
{mso-list-id:392656039;
mso-list-template-ids:214861402;}
@list l1:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level2
{mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:54.0pt;
text-indent:-18.0pt;}
@list l1:level3
{mso-level-start-at:0;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0cm;
text-indent:0cm;}
@list l1:level4
{mso-level-start-at:0;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0cm;
text-indent:0cm;}
@list l1:level5
{mso-level-start-at:0;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0cm;
text-indent:0cm;}
@list l1:level6
{mso-level-start-at:0;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0cm;
text-indent:0cm;}
@list l1:level7
{mso-level-start-at:0;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0cm;
text-indent:0cm;}
@list l1:level8
{mso-level-start-at:0;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0cm;
text-indent:0cm;}
@list l1:level9
{mso-level-start-at:0;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0cm;
text-indent:0cm;}
@list l2
{mso-list-id:792482258;
mso-list-type:hybrid;
mso-list-template-ids:-2107090682 -1672069056 884002796 1189643368 39249004 -1032551038 999467966 1125053490 -547588504 -518221020;}
@list l2:level1
{mso-level-number-format:bullet;
mso-level-text:●;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level2
{mso-level-number-format:bullet;
mso-level-text:○;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level3
{mso-level-number-format:bullet;
mso-level-text:■;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level4
{mso-level-number-format:bullet;
mso-level-text:●;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level5
{mso-level-number-format:bullet;
mso-level-text:○;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level6
{mso-level-number-format:bullet;
mso-level-text:■;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level7
{mso-level-number-format:bullet;
mso-level-text:●;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level8
{mso-level-number-format:bullet;
mso-level-text:●;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level9
{mso-level-number-format:bullet;
mso-level-text:●;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->
</style>
</head>
<body lang=en-VN link="#0563C1" vlink="#96607D" style='tab-interval:36.0pt;
word-wrap:break-word'>
<div class=WordSection1>
<p class=MsoNormal style='margin-top:72.0pt'><o:p> </o:p></p>
<p class=MsoNormal align=center style='margin-bottom:4.0pt;text-align:center'><b><span
style='font-size:48.0pt;color:#1B4F72'>LeanKG</span></b></p>
<p class=MsoNormal align=center style='margin-bottom:10.0pt;text-align:center'><span
style='font-size:20.0pt;color:#2E86C1'>Enterprise Knowledge Graph Platform</span></p>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #1ABC9C 1.0pt;
padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center;
border:none;mso-border-bottom-alt:solid #1ABC9C 1.0pt;padding:0cm;mso-padding-alt:
0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<p class=MsoNormal style='margin-top:10.0pt'><o:p> </o:p></p>
<p class=MsoNormal align=center style='margin-bottom:4.0pt;text-align:center'><b><span
style='font-size:15.0pt;color:#566573;text-transform:uppercase'>PRODUCT
REQUIREMENTS DOCUMENT</span></b></p>
<p class=MsoNormal align=center style='margin-bottom:3.0pt;text-align:center'><span
style='font-size:12.0pt;color:#566573'>Version 2.0<span
style='mso-spacerun:yes'> </span>|<span style='mso-spacerun:yes'> </span>May
2026</span></p>
<p class=MsoNormal style='margin-top:40.0pt'><o:p> </o:p></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=480
style='width:360.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=240 valign=top style='width:180.0pt;border:none white 1.0pt;
mso-border-alt:none white 0cm;background:#D6EAF8;padding:6.0pt 10.0pt 6.0pt 10.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:#2E86C1'>Classification</span></b></p>
<p class=MsoNormal align=center style='text-align:center'><span
style='font-size:10.0pt;color:#2C3E50'>Internal — Confidential</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border:none white 1.0pt;
border-left:none;mso-border-left-alt:none white 0cm;mso-border-alt:none white 0cm;
background:#D5F5E3;padding:6.0pt 10.0pt 6.0pt 10.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:#1ABC9C'>Target Release</span></b></p>
<p class=MsoNormal align=center style='text-align:center'><span
style='font-size:10.0pt;color:#2C3E50'>Q3–Q4 2026</span></p>
</td>
</tr>
</table>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>1. Executive Summary</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>LeanKG is an enterprise-grade,
temporal Knowledge Graph platform purpose-built for large-scale microservice
ecosystems. Starting as a local-first, lightweight tool, LeanKG v2.0 evolves
into a shared internal backend service that gives every software engineer on a
team — regardless of their local context — instant, precise, and
token-efficient access to the collective intelligence of the entire codebase,
all 200 services, across three deployment environments.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>The platform answers three
fundamental questions that slow down engineering teams:</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>"What does this
service do, and how does it connect to everything else?"</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>"What broke in
production last time, why, and how was it fixed?"</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>"What is the correct,
minimal context I need right now to complete this task with Cursor AI?"</span></p>
<p class=MsoNormal style='margin-top:6.0pt'><o:p> </o:p></p>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>LeanKG v2.0 introduces four
strategic pillars beyond the current v0.5.9 codebase:</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Pillar</span></b></p>
</td>
<td width=168 valign=top style='width:126.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>What It
Solves</span></b></p>
</td>
<td width=168 valign=top style='width:126.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Key
Technology</span></b></p>
</td>
<td width=168 valign=top style='width:126.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Outcome</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Shared
Team KG Service</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Siloed,
stale local graphs</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Graphiti
+ REST/MCP API</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>One
source of truth for 200 services</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Temporal
Graph Evolution</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>No
history of how the system changed</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Graphiti
temporal edges</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Time-travel
queries & incident replay</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incident
Knowledge Loop</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incidents
recur; fixes forgotten</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incident
ontology + auto-propagation</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>AI agents
never repeat known failures</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4;mso-yfti-lastrow:yes'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>3-Environment
Isolation</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Dev/staging/prod
context collisions</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Environment-scoped
subgraphs</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Zero
false context delivered to Cursor</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<h1>2. Problem Statement</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<h2>2.1 The 200-Service Reality</h2>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>Modern microservice architectures
do not just add linear complexity — they compound it. With 200 services, the
dependency graph contains potentially tens of thousands of edges. No single
engineer holds a complete mental model. When something breaks, the investigation
radius is enormous, context-gathering is slow, and the same mistakes happen
again because the fix was never formalized into the shared knowledge base.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>2.2 Current Pain Points</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Pain
Point</span></b></p>
</td>
<td width=232 valign=top style='width:174.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Who
Feels It</span></b></p>
</td>
<td width=232 valign=top style='width:174.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Business
Impact</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>AI coding
tools (Cursor) scan entire repos → waste 80–99% of tokens on irrelevant
context</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Every
engineer, every session</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Token
cost inflation; slow AI responses</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>No shared
knowledge: every engineer re-discovers the same codebase facts</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>New
hires, cross-team work</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>2–5 days
wasted onboarding per engineer per quarter</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Production
incidents recur because fixes exist only in Slack or individual memory</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>On-call
engineers; SRE</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>MTTR
increases; trust erodes</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Local-only
graph becomes stale within hours of a deployment</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Engineers
using Cursor daily</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>AI gives
wrong or outdated context</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>No
concept of environment: local, staging and prod queries return mixed results</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>QA, SRE,
feature teams</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Wrong
fixes applied to wrong environments</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Legacy
codebase has zero structured documentation; context must be
reverse-engineered each time</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Engineers
touching legacy</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Feature
delivery slows 3×; regressions increase</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>3. Vision and Goals</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<h2>3.1 Vision Statement</h2>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>LeanKG becomes the living nervous
system of every engineering team that builds on microservices — a
always-current, temporally-aware, semantically-rich knowledge graph that knows
not just what the code is, but what it means, how it behaves across environments,
what went wrong in the past, and how to prevent it from going wrong again.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>3.2 Strategic Goals</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Goal ID</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Goal
Description</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-01</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Deliver a
shared, persistent Knowledge Graph service accessible by all team members via
REST and MCP within the internal network</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-02</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Achieve
single-query context retrieval that gives Cursor AI enough precision to
complete any task on any of the 200 services without additional context
gathering</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-03</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Maintain
three isolated environment subgraphs (production, staging, local) that are
automatically updated on every deployment and code change</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-04</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Build an
incident documentation and propagation loop so that every resolved production
issue becomes a permanent, queryable knowledge artifact that prevents
recurrence</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-05</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Migrate
the graph database layer from CozoDB to Graphiti to gain native temporal
reasoning, entity evolution tracking, and LLM-native graph construction</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-06</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Enable
every team member to contribute knowledge (annotations, runbooks, fixes,
architectural decisions) through a low-friction interface that keeps the
graph authoritative</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-07</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Reduce
average Cursor AI token cost per engineering task by at least 60% compared to
baseline full-repo scanning</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>3.3 Success Metrics</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Metric</span></b></p>
</td>
<td width=168 valign=top style='width:126.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Current
Baseline</span></b></p>
</td>
<td width=168 valign=top style='width:126.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>v2.0
Target</span></b></p>
</td>
<td width=168 valign=top style='width:126.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Measurement
Method</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Token
cost per AI query</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>22,261
tokens (LeanKG v0.5.9)</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'><
8,000 tokens</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>MCP query
log analysis</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Context
precision (relevant nodes / total returned)</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>~40%</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>> 85%</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Engineer
feedback rating per query</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incident
recurrence rate (same root cause)</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Unmeasured;
anecdotally high</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>< 5%
over 6 months</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incident
postmortem tags in KG</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Knowledge
graph freshness lag after deploy</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Manual
re-index required</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>< 5
minutes, automatic</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>CI/CD
webhook timestamp delta</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Engineer
onboarding time to first productive PR</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>3–5 days
average</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>< 1
day with KG-assisted Cursor</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>HR + team
lead survey</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Shared KG
API p99 latency</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>N/A
(local only)</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'><
200ms for any query</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>API
observability dashboard</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>4. User Stories</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<h2>4.1 Software Engineer — Daily Development</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=72 style='width:54.0pt;border:solid #AED6F1 1.0pt;mso-border-alt:
solid #AED6F1 .25pt;background:#2E86C1;padding:4.0pt 5.0pt 4.0pt 5.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:white'>US-01</span></b></p>
</td>
<td width=552 valign=top style='width:414.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:4.0pt 6.0pt 4.0pt 8.0pt'>
<p class=MsoNormal><span style='font-size:10.0pt;color:#2C3E50'>As a software
engineer working in Cursor, I want to type a single natural-language query
like "trace the payment flow from API gateway to database" and
receive a minimal, precise subgraph of the relevant services, functions,
schemas and their relationships so that I can start coding without spending
30 minutes reading source files.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=72 style='width:54.0pt;border:solid #AED6F1 1.0pt;mso-border-alt:
solid #AED6F1 .25pt;background:#2E86C1;padding:4.0pt 5.0pt 4.0pt 5.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:white'>US-02</span></b></p>
</td>
<td width=552 valign=top style='width:414.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:4.0pt 6.0pt 4.0pt 8.0pt'>
<p class=MsoNormal><span style='font-size:10.0pt;color:#2C3E50'>As an
engineer picking up a new feature ticket, I want LeanKG to automatically
surface the concept map for the feature domain (e.g., "Order
Management") showing which services own it, which APIs expose it, which
databases store it, and which other features share data with it, without me
needing to know which repositories to search.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=72 style='width:54.0pt;border:solid #AED6F1 1.0pt;mso-border-alt:
solid #AED6F1 .25pt;background:#2E86C1;padding:4.0pt 5.0pt 4.0pt 5.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:white'>US-03</span></b></p>
</td>
<td width=552 valign=top style='width:414.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:4.0pt 6.0pt 4.0pt 8.0pt'>
<p class=MsoNormal><span style='font-size:10.0pt;color:#2C3E50'>As an
engineer writing a new service, I want LeanKG to warn me — inside Cursor —
when my proposed API contract already conflicts with an existing contract in
another service in production, staging, or another team's local branch that
has been pushed to the shared KG.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>4.2 On-Call Engineer — Incident Response</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=72 style='width:54.0pt;border:solid #AED6F1 1.0pt;mso-border-alt:
solid #AED6F1 .25pt;background:#E67E22;padding:4.0pt 5.0pt 4.0pt 5.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:white'>US-04</span></b></p>
</td>
<td width=552 valign=top style='width:414.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#FDEBD0;padding:4.0pt 6.0pt 4.0pt 8.0pt'>
<p class=MsoNormal><span style='font-size:10.0pt;color:#2C3E50'>As an on-call
engineer responding to a production alert, I want to query LeanKG with the
error signature and receive: (a) the blast radius of affected services, (b)
previously recorded incidents with the same or similar signature, (c) the
resolution steps that worked last time, so I can resolve in minutes rather
than hours.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=72 style='width:54.0pt;border:solid #AED6F1 1.0pt;mso-border-alt:
solid #AED6F1 .25pt;background:#E67E22;padding:4.0pt 5.0pt 4.0pt 5.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:white'>US-05</span></b></p>
</td>
<td width=552 valign=top style='width:414.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#FDEBD0;padding:4.0pt 6.0pt 4.0pt 8.0pt'>
<p class=MsoNormal><span style='font-size:10.0pt;color:#2C3E50'>As an on-call
engineer who just resolved an incident, I want a guided, low-friction flow to
document the root cause, the fix, the impacted services, the environment
context, and any code changes made, so that this knowledge is permanently
queryable by future AI agents and engineers.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>4.3 Team Lead / Architect</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=72 style='width:54.0pt;border:solid #AED6F1 1.0pt;mso-border-alt:
solid #AED6F1 .25pt;background:#1ABC9C;padding:4.0pt 5.0pt 4.0pt 5.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:white'>US-06</span></b></p>
</td>
<td width=552 valign=top style='width:414.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D5F5E3;padding:4.0pt 6.0pt 4.0pt 8.0pt'>
<p class=MsoNormal><span style='font-size:10.0pt;color:#2C3E50'>As a team
lead, I want to query the KG for the dependency blast radius of any planned
refactor — showing which of the 200 services, tests, and feature flags will
be affected — before a single line of code is changed, so I can accurately
scope the migration effort.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=72 style='width:54.0pt;border:solid #AED6F1 1.0pt;mso-border-alt:
solid #AED6F1 .25pt;background:#1ABC9C;padding:4.0pt 5.0pt 4.0pt 5.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:white'>US-07</span></b></p>
</td>
<td width=552 valign=top style='width:414.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D5F5E3;padding:4.0pt 6.0pt 4.0pt 8.0pt'>
<p class=MsoNormal><span style='font-size:10.0pt;color:#2C3E50'>As an
architect, I want the KG to maintain a versioned record of every
Architectural Decision Record (ADR) linked to the code entities it affects,
so that Cursor AI can explain not just what the code does but why it was
designed that way.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>4.4 New Team Member — Onboarding</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=72 style='width:54.0pt;border:solid #AED6F1 1.0pt;mso-border-alt:
solid #AED6F1 .25pt;background:#8E44AD;padding:4.0pt 5.0pt 4.0pt 5.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:white'>US-08</span></b></p>
</td>
<td width=552 valign=top style='width:414.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F4ECF7;padding:4.0pt 6.0pt 4.0pt 8.0pt'>
<p class=MsoNormal><span style='font-size:10.0pt;color:#2C3E50'>As a new
engineer on day one, I want to ask Cursor "give me a tour of the
checkout system" and receive a structured, context-rich walkthrough of
the relevant services, their responsibilities, their known quirks, and the
incidents they've had, all sourced from the team's shared KG.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>4.5 QA / Release Engineer</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=72 style='width:54.0pt;border:solid #AED6F1 1.0pt;mso-border-alt:
solid #AED6F1 .25pt;background:#C0392B;padding:4.0pt 5.0pt 4.0pt 5.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:white'>US-09</span></b></p>
</td>
<td width=552 valign=top style='width:414.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#FADBD8;padding:4.0pt 6.0pt 4.0pt 8.0pt'>
<p class=MsoNormal><span style='font-size:10.0pt;color:#2C3E50'>As a QA
engineer, I want to query the staging environment subgraph to find all
services that were updated in the last release candidate, the tests that
cover them, and any known open issues in those services, so I can build a
targeted regression test plan.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>5. Concept Ontology — Deep Dive</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>The Concept Ontology defines the
"what" of the system — the nouns, categories, and taxonomies that
describe the knowledge domain. It answers: "What kinds of things exist in
this system, and how are they classified?" This is the backbone of every
query LeanKG will serve to Cursor AI agents.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>5.1 Ontology Design Principles</h2>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Universal Resource
Identity: Every entity in the graph has a globally unique ID (GID) composed of
[org]:[environment]:[service]:[type]:[name]:[version]. This prevents namespace
collisions across 200 services and three environments.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Layer Separation: Entities
are organized into four conceptual layers — Infrastructure, Service, Domain,
and Knowledge — and cross-layer relationships are explicitly typed.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Temporal Validity: Every
entity node carries valid_from and valid_until timestamps. This enables
point-in-time queries ("what did the payment service look like on
2026-03-01?") and is the core reason for adopting Graphiti.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Environment Scope: Every
entity is tagged with its environment (production, staging,
local:[engineer_id]) and subgraph queries are always environment-scoped unless
explicitly cross-environment.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Confidence Score: Entities
auto-indexed from code carry a confidence score (0.0–1.0). Human-annotated
entities start at 1.0. AI-inferred entities start at 0.6 and require human
validation to promote to 0.9+.</span></p>
<p class=MsoNormal style='margin-top:6.0pt'><o:p> </o:p></p>
<h2>5.2 Core Entity Types (Node Taxonomy)</h2>
<h3>5.2.1 Infrastructure Layer</h3>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Entity
Type</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Description
& Key Properties</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>DeploymentEnvironment</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Top-level
environment scope: production | staging | local. Properties: name, region,
cloud_provider, cluster_id, sla_tier.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Cluster</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Kubernetes
or ECS cluster. Properties: provider, region, node_count, namespace_list.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Namespace</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>K8s
namespace or logical deployment group. Properties: environment_ref,
owner_team.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Database</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Database
instance (Postgres, MySQL, Redis, Elasticsearch). Properties: type, host,
schema_version, owner_service.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>MessageQueue</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Kafka
topic, SQS queue, NATS subject. Properties: broker_type, topic_name,
retention_policy, owner_service, consumer_services.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>ExternalSystem</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Third-party
dependency (Stripe, Twilio, etc.). Properties: vendor, api_version,
auth_type, known_issues.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>ConfigMap
/ Secret</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Environment-specific
configuration entity. Properties: keys, owner_service, environment_scope.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:5.0pt'><o:p> </o:p></p>
<h3>5.2.2 Service Layer</h3>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Entity
Type</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Description
& Key Properties</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Microservice</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The
primary unit. Properties: name, team_owner, repository_url, language,
framework, docker_image, current_version, environments[], health_check_url,
sla_p99_ms, criticality_tier.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>APIEndpoint</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>HTTP/gRPC
endpoint. Properties: method, path, auth_scheme, rate_limit, request_schema,
response_schema, deprecated, owner_service.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>APIContract</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Formal
interface contract (OpenAPI, Protobuf, AsyncAPI). Properties: spec_version,
format, compatible_versions[], breaking_change_log[].</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Function
/ Method</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Code-level
callable. Properties: signature, file_path, line_range, language,
complexity_score, test_coverage_pct.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Module /
Package</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Language-level
module. Properties: path, language, export_count, import_count.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Repository</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Git
repository. Properties: url, default_branch, last_commit_sha,
ci_pipeline_url.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>CIBuild</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>CI/CD
build artifact. Properties: build_id, status, triggered_by, test_results_url,
deploy_target_env.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FeatureFlag</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Feature
toggle. Properties: flag_key, default_value, rollout_pct, owner_team,
linked_services.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:5.0pt'><o:p> </o:p></p>
<h3>5.2.3 Domain Layer</h3>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Entity
Type</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Description
& Key Properties</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>BusinessDomain</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>High-level
bounded context (e.g., "Payments", "Inventory").
Properties: name, owner_team, services[], key_metrics[].</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Feature</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Product-level
feature unit (e.g., "One-Click Checkout"). Properties: name, status
(planned|active|deprecated), epic_id, jira_link, owner_team,
linked_services[], acceptance_criteria.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>DataEntity</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>A
business data object (Order, User, Product). Properties: name,
canonical_schema, owner_service, storage_locations[], pii_flag,
gdpr_classification.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>BusinessRule</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>A
codified business constraint (e.g., "orders over $10K require manual
approval"). Properties: rule_text, enforcement_point, linked_services[],
linked_code_refs[].</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>ADR</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Architectural
Decision Record. Properties: title, status (proposed|accepted|superseded),
context, decision, consequences, affected_services[], linked_commits[].</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Runbook</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Operational
runbook. Properties: title, trigger_condition, steps[], owner_team,
last_validated_date, linked_incidents[].</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:5.0pt'><o:p> </o:p></p>
<h3>5.2.4 Knowledge Layer</h3>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Entity
Type</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Description
& Key Properties</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incident</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Production
incident record. Properties: id, severity (P0–P4), title, environment,
started_at, resolved_at, mttr_minutes, root_cause_summary,
contributing_services[], resolution_steps[], linked_commits[],
linked_runbook, recurrence_fingerprint.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>KnownIssue</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>A
documented bug or quirk not yet resolved. Properties: description,
affected_service, workaround, severity, reporter, discovered_at,
linked_incident.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>DebugTrace</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>A
recorded debugging session. Properties: query_text, affected_nodes[],
resolution, engineer_id, created_at, environment, linked_incident.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>CodeAnnotation</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Human or
AI-generated semantic annotation attached to any code entity. Properties:
text, author, confidence, created_at, annotation_type (EXPLANATION | WARNING
| TODO | FIX | WHY).</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>TeamKnowledge</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Tribal
knowledge nugget (e.g., "never run migrations on Friday evening").
Properties: text, author, domain_ref, tags[], confidence.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>ChangeEvent</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>A
recorded change to any graph entity (code, config, schema). Properties:
entity_gid, change_type (ADD|MODIFY|REMOVE|DEPRECATE), changed_by, timestamp,
commit_sha, diff_summary.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:6.0pt'><o:p> </o:p></p>
<h2>5.3 Relationship Type Taxonomy (Edge Types)</h2>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>All edges are directed and typed.
Every edge carries: source_gid, target_gid, relation_type, valid_from,
valid_until, confidence, environment, and metadata.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h3>5.3.1 Structural Relationships</h3>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Edge
Type</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Semantics
& Example</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>OWNS</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Team or
service owns an entity. (team:payments) OWNS (service:payment-gateway)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>DEPLOYED_IN</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Service
is deployed in an environment. (service:order-service) DEPLOYED_IN
(env:production)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>IMPORTS</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Module
imports another module. (module:auth-client) IMPORTS (module:jwt-lib)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>CALLS</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Function
calls another function. (fn:processOrder) CALLS (fn:chargeCard)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>DEPENDS_ON</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Service
runtime dependency. (service:order) DEPENDS_ON (service:inventory)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>EXPOSES</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Service
exposes an API endpoint. (service:user-service) EXPOSES (endpoint:GET
/users/{id})</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>STORES_IN</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Service
writes to a database. (service:order) STORES_IN (db:orders_postgres)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>PUBLISHES_TO</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Service
publishes to a message queue. (service:payment) PUBLISHES_TO
(queue:payment-events)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:9'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>CONSUMES_FROM</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Service
consumes from a message queue. (service:notification) CONSUMES_FROM
(queue:payment-events)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:10'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>TESTED_BY</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Code
entity is covered by a test. (fn:chargeCard) TESTED_BY
(test:TestChargeCard_Success)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:11'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>IMPLEMENTS</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Service
implements a feature. (service:cart) IMPLEMENTS (feature:add-to-cart)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:12;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>DEFINED_BY</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Service
is governed by a contract. (service:payment-gateway) DEFINED_BY
(contract:payment-openapi-v3)</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h3>5.3.2 Knowledge Relationships</h3>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Edge
Type</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Semantics
& Example</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>CAUSED_BY</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incident
root cause. (incident:INC-2024-001) CAUSED_BY (service:legacy-auth)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>RESOLVED_BY</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incident
resolution action. (incident:INC-2024-001) RESOLVED_BY (commit:abc123)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>DOCUMENTED_IN</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Entity
has a runbook or ADR. (service:payment-gateway) DOCUMENTED_IN
(runbook:payment-failover)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>SUPERSEDES</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>ADR
supersedes a prior decision. (adr:ADR-045) SUPERSEDES (adr:ADR-023)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>ANNOTATED_WITH</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Code
entity has semantic annotation. (fn:legacyCalc) ANNOTATED_WITH
(annotation:WHY-we-cant-refactor)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>SHARES_DATA_WITH</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Two
services exchange a DataEntity. (service:order) SHARES_DATA_WITH
(service:fulfillment) VIA (data:Order)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>RECURRENCE_OF</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incident
is a recurrence of a known pattern. (incident:INC-2026-022) RECURRENCE_OF
(incident:INC-2024-001)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>MITIGATED_BY</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Known
issue is mitigated by a workaround. (known-issue:KI-007) MITIGATED_BY
(runbook:KI-007-workaround)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:9'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>EVOLVED_FROM</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Temporal
entity evolution. (service:auth-v2) EVOLVED_FROM (service:auth-v1)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:10;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>DEPLOYED_AS</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Code
version deployed as a build artifact. (commit:def456) DEPLOYED_AS
(build:build-4891) IN (env:production)</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>6. Procedural Ontology — Deep Dive</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>While the Concept Ontology
describes what exists, the Procedural Ontology encodes what happens — sequences
of actions, workflows, decision trees, and operational patterns. It is the
"how" layer of the knowledge graph, and it is what transforms LeanKG
from a code-indexer into a true engineering intelligence platform.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>6.1 Procedural Entity Types</h2>
<h3>6.1.1 Workflow</h3>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>A Workflow represents a business
or technical process as a directed acyclic graph (DAG) of Steps. Workflows are
first-class nodes in the knowledge graph and can be queried to understand
end-to-end business processes.</span></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Property</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Description</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>workflow_id</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Unique
identifier (e.g., "checkout-flow-v3")</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>name</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Human-readable
name</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>domain</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>BusinessDomain
reference</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>trigger</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>What
initiates this workflow (event, API call, schedule)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>steps</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Ordered
list of Step node GIDs</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>happy_path_sla_ms</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Expected
duration for the happy path</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>error_paths</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>List of
known failure modes and their recovery workflows</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>environment_variants</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Differences
in workflow behavior per environment</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:9;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>last_traced_at</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Timestamp
of last live trace (production execution captured)</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h3>6.1.2 Step</h3>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>A Step is a single unit of work
within a Workflow. It maps to one or more Microservices, Functions, or
APIEndpoints and carries the input/output contract and the known failure modes
of that step.</span></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Property</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Description</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>step_id</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Unique
within its workflow</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>name</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Descriptive
label (e.g., "Validate Payment Method")</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>responsible_service</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Microservice
GID</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>responsible_function</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Function
GID (optional, for granular tracing)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>input_schema</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Expected
input data shape (JSON Schema reference)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>output_schema</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Expected
output data shape</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>timeout_ms</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Timeout
configuration</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>retry_policy</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Retry
count, backoff strategy</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:9'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>failure_mode</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>What
happens when this step fails (skip, abort, fallback)</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:10;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>fallback_step</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Step GID
to execute on failure</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h3>6.1.3 OperationalProcedure</h3>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>An OperationalProcedure is a
human+system workflow for operational tasks: deployments, rollbacks, database
migrations, certificate rotations, and on-call escalations. It is the
structured form of a Runbook.</span></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Property</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Description</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>procedure_id</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Unique
identifier</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>trigger_conditions</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Alert
conditions or manual triggers that invoke this procedure</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>preconditions</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>System
state that must be true before starting (e.g., "staging deploy
successful")</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>steps</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Ordered
list of ProcedureStep nodes</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>rollback_procedure</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Reference
to a rollback OperationalProcedure</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>escalation_path</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Who to
contact at each step if automated resolution fails</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>estimated_duration_minutes</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>How long
this procedure takes</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>affected_environments</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Which
environments are impacted</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:9;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>validation_checks</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Post-completion
validation queries against the KG</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h3>6.1.4 IncidentResponsePlaybook</h3>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>A specialized form of
OperationalProcedure that encodes the structured response to a specific class
of incidents. Playbooks are linked to Incidents via RESOLVED_BY and are
retrieved automatically when a new incident's fingerprint matches a known
pattern.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Fingerprint matching uses
both structural similarity (same services in blast radius) and semantic
similarity (error message embedding comparison via vector search in Graphiti).</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Playbooks are
version-controlled within the KG and can be marked as superseded when a more
reliable resolution is found.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Every step in a Playbook
can be marked as "AI-executable" (Cursor can automate it) or
"human-required" (requires manual judgment).</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h3>6.1.5 DevelopmentProcedure</h3>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>Encodes team-specific development
workflows: how to add a new service, how to deprecate an API, how to perform
schema migrations, how to conduct code reviews. These are the institutional
knowledge that currently lives only in Confluence or the minds of senior
engineers.</span></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Procedure</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Example
Steps Encoded in KG</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Add New
Microservice</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Create
repo → Define OpenAPI contract → Register in KG → Add to service mesh →
Configure CI/CD → Set up dashboards → Add to dependency graph</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Deprecate
API Endpoint</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Mark as
deprecated in KG → Notify consumer services → Set sunset date → Monitor
consumer traffic → Remove after sunset → Update contracts</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Database
Schema Migration</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Create
migration script → Test in local → Test in staging → Create rollback script →
Deploy in production with feature flag → Validate → Remove flag</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incident
Postmortem</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Gather
timeline → Identify root cause → Write resolution → Link to affected KG nodes
→ Update playbook → Schedule follow-up items</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:6.0pt'><o:p> </o:p></p>
<h2>6.2 Procedural Query Patterns for Cursor AI</h2>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>The Procedural Ontology enables a
new class of queries that are not possible with a purely structural code graph:</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Query
Intent</span></b></p>
</td>
<td width=232 valign=top style='width:174.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Procedural
Ontology Used</span></b></p>
</td>
<td width=232 valign=top style='width:174.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Context
Returned to Cursor</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>"How
do I implement X feature end-to-end?"</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>DevelopmentProcedure:
Add New Feature</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Ordered
steps + linked services + example PRs + ADRs</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>"Trace
the checkout flow"</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Workflow:
checkout-flow-v3</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Step DAG
+ service map + known failure points + SLAs</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>"What
do I do when payment times out?"</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>IncidentResponsePlaybook:
payment-timeout-P2</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Fingerprint-matched
playbook + recent incident outcomes</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>"How
do I roll back the order service?"</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>OperationalProcedure:
rollback-order-service</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Step-by-step
+ preconditions + validation checks</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>"What
broke in staging last week?"</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incident
nodes + environment:staging filter</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incident
list + root causes + resolutions + status</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>"Is
there a documented reason why auth service is synchronous?"</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>ADR +
CodeAnnotation (type:WHY)</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>ADR-023
context, decision, and consequences</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>7. Database Layer: Graphiti vs CozoDB — Analysis & Decision</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>The current LeanKG implementation
uses CozoDB as its graph database backend — an embedded, Datalog-powered
database with strong query expressiveness for static graphs. As the
requirements evolve toward temporal reasoning, shared multi-user access, LLM-native
graph construction, and incident replay, a re-evaluation is warranted.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>7.1 CozoDB — Current State Assessment</h2>
<h3>Strengths</h3>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Embedded (no separate
process): zero operational overhead for local-first use cases</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Datalog query language:
expressive recursive queries for impact radius computation</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Strong performance for
read-heavy workloads on static graphs</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Rust-native library:
excellent fit for the current LeanKG Rust binary</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>No licensing costs; MIT
licensed</span></p>
<h3>Limitations for v2.0 Requirements</h3>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>No native temporal graph
support: bi-temporal edges require manual implementation with significant
complexity</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>No built-in LLM
integration: entity extraction and semantic search require external tooling</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Not designed for multi-user
concurrent writes: shared team service requires careful locking</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>No vector search: semantic
similarity for incident fingerprint matching is not supported natively</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Schema evolution is
painful: changing the graph schema requires manual migration scripts</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Limited ecosystem: smaller
community, fewer integrations compared to Neo4j or dedicated temporal graph
stores</span></p>
<p class=MsoNormal style='margin-top:6.0pt'><o:p> </o:p></p>
<h2>7.2 Graphiti — Capability Assessment</h2>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>Graphiti is an open-source
temporal knowledge graph framework developed by Zep AI, specifically designed
for building LLM-powered applications that require memory of events over time.
It is built on top of Neo4j and integrates deeply with LLM pipelines.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h3>Core Graphiti Capabilities Relevant to LeanKG v2.0</h3>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Capability</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>How It
Addresses LeanKG v2.0 Needs</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Bi-temporal
edges (valid_time + transaction_time)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Every
graph change has two time axes: when it was true in the world, and when it
was recorded. Enables both "what did the system look like on March
1?" and "what did we know about it on March 1?"</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>LLM-native
entity extraction</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Graphiti
can ingest unstructured incident reports, Slack messages, or PR descriptions
and automatically extract entities and relationships into the graph —
dramatically reducing annotation friction</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Vector-based
semantic search</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Built-in
embedding search enables incident fingerprint matching: "find incidents
semantically similar to this error stack trace" without exact string
matching</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Episode-based
ingestion</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Graphiti's
episodic memory model is ideal for incident documentation: each incident
resolution session is an "episode" that updates the graph with new
knowledge, preserving history</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Contradiction
detection</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Graphiti
detects when new information contradicts existing graph facts and flags them
for human review — prevents knowledge corruption in a multi-contributor
shared KG</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Neo4j
backend</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Production-grade,
horizontally scalable graph database with ACID transactions, full-text
search, and a rich ecosystem of tooling</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Python-first
SDK</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Graphiti's
Python SDK integrates naturally with FastAPI-based backend services, enabling
rapid development of the LeanKG v2.0 API layer</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h3>Graphiti Limitations & Mitigations</h3>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Limitation</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Mitigation
Strategy</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Requires
Neo4j (no longer embedded)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Run Neo4j
in Docker for local environments; use Neo4j Aura or self-hosted cluster for
staging/production. Cost: ~$50–200/month for team-sized Neo4j Aura instance.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Python
SDK (vs Rust binary)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>LeanKG
v2.0 separates into: (a) Rust indexer/CLI that writes to Graphiti via REST
API, (b) Python FastAPI service (leankg-server) that wraps Graphiti and
exposes MCP + REST endpoints.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>LLM API
dependency for entity extraction</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Entity
extraction from code is still done via the Rust tree-sitter indexer
(deterministic, fast, no LLM). LLM-based extraction is used only for
unstructured inputs (incident reports, annotations). Configurable to use
local LLM (Ollama) to avoid external API costs.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Graphiti
is relatively new (v0.x)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Pin to a
stable Graphiti version; abstract the Graphiti interface behind a LeanKG
GraphStore trait so we can swap back to CozoDB or to another backend if
needed.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:6.0pt'><o:p> </o:p></p>
<h2>7.3 Decision Recommendation: Migrate to Graphiti</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=72 style='width:54.0pt;border:solid #AED6F1 1.0pt;mso-border-alt:
solid #AED6F1 .25pt;background:#1ABC9C;padding:4.0pt 5.0pt 4.0pt 5.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:white'>DECISION</span></b></p>
</td>
<td width=552 valign=top style='width:414.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D5F5E3;padding:4.0pt 6.0pt 4.0pt 8.0pt'>
<p class=MsoNormal><span style='font-size:10.0pt;color:#2C3E50'>LeanKG v2.0
should migrate from CozoDB to Graphiti as the primary graph store for the
shared server mode, while retaining CozoDB as an option for
offline/local-only CLI mode where engineers prefer zero-dependency operation.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>The architectural pattern is:</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Local CLI mode (leankg CLI
without --remote flag): CozoDB embedded, unchanged from v0.5.9. Works offline,
no dependencies, instant startup.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Shared server mode
(leankg-server): Graphiti + Neo4j, exposed via REST and MCP. All team members
connect to this instance. All ChangeEvents, Incidents, and environment updates
go through this server.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Sync bridge: When an
engineer's local CozoDB graph has changes that should be promoted to the team
KG (e.g., a new annotation or a resolved incident), leankg sync pushes those
delta changes to the shared Graphiti server.</span></p>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>8. Three-Environment Architecture</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>One of the most critical v2.0
features is the introduction of environment-scoped subgraphs. Today, LeanKG
indexes whatever codebase is in the current directory — there is no concept of
whether that code is running in production, staging, or a developer's local
machine. This causes context collisions that mislead AI agents.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>8.1 Environment Model</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Environment</span></b></p>
</td>
<td width=232 valign=top style='width:174.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Scope
& Source of Truth</span></b></p>
</td>
<td width=232 valign=top style='width:174.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Update
Trigger</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Production
(prod)</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>What is
currently serving real user traffic. The highest-trust, highest-priority
subgraph. Services, versions, configs, and database schemas reflect the
deployed state.</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>CI/CD
deployment webhook fires on every successful production deploy. Kubernetes
admission webhook captures rollouts. ChangeEvent nodes are created
automatically.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Staging
(staging)</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The
pre-production integration environment. Reflects the state of the next
release candidate. May contain services not yet in production and
experimental feature flags.</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>CI/CD
webhook on staging deploy. Engineers can also manually push staging-specific
annotations. Staging graph is a child of production with deltas applied on
top.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3;mso-yfti-lastrow:yes'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Local
([engineer_id])</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Each
engineer's development context. Scoped to their machine, their current
branch, and their work-in-progress changes. Multiple local graphs can coexist
without conflict.</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>leankg
watch detects local file changes and updates the local subgraph. leankg sync
optionally pushes human-approved knowledge to the shared team KG.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>8.2 Environment Inheritance Model</h2>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>Environments follow an inheritance
chain: Local → Staging → Production. When an entity does not exist in the local
graph, the query engine automatically falls through to staging, then to
production. This means a developer working on service-A can query the full
system context even for services they have never checked out locally.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=72 style='width:54.0pt;border:solid #AED6F1 1.0pt;mso-border-alt:
solid #AED6F1 .25pt;background:#2E86C1;padding:4.0pt 5.0pt 4.0pt 5.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:white'>EXAMPLE</span></b></p>
</td>
<td width=552 valign=top style='width:414.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:4.0pt 6.0pt 4.0pt 8.0pt'>
<p class=MsoNormal><span style='font-size:10.0pt;color:#2C3E50'>Engineer
Alice is working on "user-service" locally. She queries: "what
services call my notification endpoint?" LeanKG first checks Alice's
local graph (no consumers indexed locally), falls through to staging (2
consumers found), then production (5 consumers found). Response includes all
5 with environment labels so Alice knows which ones are live.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>8.3 Conflict Resolution Rules</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Conflict
Type</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Resolution
Strategy</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Same
service, different versions in staging vs production</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Both
nodes exist. Queries scoped to production return the production version.
Cross-environment queries return both with version labels. ChangeEvent edges
show the diff.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Local
schema differs from staging/production</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Local
schema change is flagged with a CONFLICT_WARNING annotation. Engineer must
explicitly mark it as intentional or sync it to staging before it can be
queried without a warning.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Two
engineers have conflicting local annotations for the same entity</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Both
annotations are preserved. When queried, both are returned with author and
timestamp metadata. The shared team KG shows the most recently
human-validated annotation as canonical.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>An
incident resolution in local differs from the one documented in production KG</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incident
nodes are environment-tagged. Engineer can run leankg incident merge to
propose their resolution as an update to the production incident record,
which goes through a review step.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>9. Shared Team Knowledge Graph Service</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>The core architectural shift in
LeanKG v2.0 is the promotion from a local CLI tool to a shared internal backend
service. Every team member, every CI/CD pipeline, every AI agent queries this
single authoritative service.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>9.1 Service Architecture</h2>
<h3>9.1.1 Component Stack</h3>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Component</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Technology
& Responsibility</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Graph
Store</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Graphiti
(Zep AI) + Neo4j 5.x. Stores all entity and relationship data with full
temporal and vector indexing.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>API
Server (leankg-server)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Python
3.12 + FastAPI. Exposes REST API, MCP server endpoint, and WebSocket for
real-time graph update notifications.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Indexer
Workers</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Rust-based
workers (ported from current LeanKG CLI). Consume CI/CD webhooks, parse
source code via tree-sitter, and write structured entities to Graphiti.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>LLM
Gateway</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Optional:
LiteLLM proxy configured to route entity extraction and semantic search
requests to either OpenAI, Anthropic, or a local Ollama instance based on
team configuration.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Auth
& RBAC</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>JWT-based
authentication. Role: Reader (query only), Contributor (query + annotate +
document incidents), Admin (configure environments, approve schema changes).</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Cache
Layer</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Redis.
Caches frequent subgraph queries (service dependency maps, impact radius
results) with a 60-second TTL. Cache is invalidated on ChangeEvent for
affected entities.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Sync
Agent (leankg sync)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Rust CLI
component. Pushes local graph deltas to the shared server, resolves
conflicts, and pulls remote updates to the local CozoDB cache.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Web UI
(leankg web)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Enhanced
from v0.5.9. Adds team dashboard, environment switcher, incident log, and
knowledge contribution interface.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>9.2 REST API Design</h2>
<h3>Core Query Endpoints</h3>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Endpoint</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Description</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>GET
/api/v2/context?q={query}&env={env}&depth={n}</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Primary
context retrieval. Natural language or GID-based query returning a targeted
subgraph with the minimum nodes needed. env defaults to production.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>GET
/api/v2/services/{service_id}/impact?env={env}</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Blast
radius computation for a service. Returns all downstream services, functions,
and tests affected by a change.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>GET
/api/v2/services/{service_id}/dependencies?env={env}</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Full
dependency tree (upstream and downstream) for a service.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>GET
/api/v2/trace/{workflow_id}?env={env}</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Full
procedural trace of a workflow with all step details and known failure modes.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>GET
/api/v2/incidents?env={env}&fingerprint={fp}&limit={n}</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Retrieve
incidents matching a fingerprint or recency filter.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>POST
/api/v2/incidents</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Create a
new incident record with structured metadata.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>PATCH
/api/v2/incidents/{id}/resolve</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Document
the resolution of an incident. Triggers auto-propagation to update related
KnownIssue nodes and Playbooks.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>POST
/api/v2/entities/{gid}/annotate</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Add a
CodeAnnotation or TeamKnowledge node to any entity.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:9'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>GET
/api/v2/search?q={text}&type={entity_type}&env={env}</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Full-text
+ semantic hybrid search across all entity names, descriptions, and
annotations.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:10'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>GET
/api/v2/environments/diff?from={env1}&to={env2}</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Show all
entity differences between two environments (e.g., staging vs production
delta for current release).</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:11;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>GET
/api/v2/history/{gid}?from={ts}&to={ts}</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Temporal
history of an entity — all changes between two timestamps using Graphiti's
bi-temporal index.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>9.3 MCP Server Design</h2>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>The shared leankg-server exposes
an MCP-compatible server endpoint at mcp://internal.leankg:7700/mcp. Cursor AI
agents and Claude Code agents connect to this endpoint. All engineers' Cursor
instances point to the same shared MCP server — they do not run local LeanKG
MCP servers.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h3>Enhanced MCP Tool Set for v2.0</h3>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>MCP Tool</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Description</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>kg_context(query,
env, depth)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Primary
tool. Returns a compact JSON subgraph for any natural-language or GID query.
The workhorse of Cursor integration.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>kg_impact(service_id,
env)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Compute
blast radius. Returns list of affected services, functions, and tests.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>kg_trace_workflow(workflow_id,
env)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Retrieve
full procedural trace of a named workflow.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>kg_search(text,
type, env)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Semantic
+ full-text search across the entire KG.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>kg_incident_lookup(error_sig,
env)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Find past
incidents by error signature or semantic similarity.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>kg_diff_environments(from_env,
to_env)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Show
what's different between staging and production.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>kg_annotate(gid,
text, type)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Add an
annotation to any entity from within a Cursor session. Low-friction knowledge
contribution.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>kg_service_info(service_id,
env)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Complete
profile of a service: owner, dependencies, APIs, known issues, recent
incidents.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:9'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>kg_history(gid,
from, to)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Temporal
history of any entity. "What did this service look like last
month?"</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:10;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>kg_document_incident(incident_data)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Create a
new incident record directly from a Cursor session during incident response.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>10. Incident Knowledge Loop</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>The Incident Knowledge Loop is the
mechanism that ensures LeanKG evolves continuously with the team's operational
experience. Every incident resolved is converted into structured, queryable
knowledge that prevents its recurrence.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>10.1 Incident Lifecycle in the KG</h2>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo3'><![if !supportLists]><span
style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>DETECTION: Alert fires
(PagerDuty, Datadog, Prometheus). Incident is auto-created in KG with severity,
affected_services (from alert metadata), environment:production, and
recurrence_fingerprint (hash of error type + service set).</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo3'><![if !supportLists]><span
style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>TRIAGE: Engineer queries
kg_incident_lookup(error_sig, "production") from Cursor. KG returns:
(a) matching past incidents with fingerprints, (b) the playbook that resolved
each, (c) the blast radius graph for the current alert.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo3'><![if !supportLists]><span
style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>RESPONSE: Engineer follows
the suggested playbook steps. Each step executed can be logged back to the
incident record via kg_document_incident.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo3'><![if !supportLists]><span
style='mso-list:Ignore'>4.<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>RESOLUTION: Engineer runs
the incident resolution flow in the LeanKG Web UI or via leankg incident
resolve {id}. Guided form captures: root cause summary, resolution steps (free
text + structured), linked commits, linked runbook, lessons learned.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo3'><![if !supportLists]><span
style='mso-list:Ignore'>5.<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>PROPAGATION: leankg-server
auto-propagates the resolution: (a) creates or updates a Playbook node linked
to this incident class, (b) creates RESOLVED_BY edges to the fix commits, (c)
updates the recurrence_fingerprint index so future identical incidents are
immediately matched, (d) marks any KnownIssue nodes as resolved or partially
mitigated, (e) notifies the team channel via webhook.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo3'><![if !supportLists]><span
style='mso-list:Ignore'>6.<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>FUTURE PREVENTION: Next
time Cursor AI encounters the same error signature in any codebase context,
kg_incident_lookup returns the full history and resolution. The AI agent can
automatically suggest the fix without engineer intervention.</span></p>
<p class=MsoNormal style='margin-top:6.0pt'><o:p> </o:p></p>
<h2>10.2 Recurrence Fingerprint Algorithm</h2>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>The fingerprint system is what
enables LeanKG to recognize "we've seen this before" across incidents
that may not have identical error messages:</span></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Fingerprint
Component</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Weight
in Similarity Score</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Error
type / exception class (exact match)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>35%</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Primary
service in blast radius (exact match)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>25%</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Error
message semantic embedding similarity (vector cosine)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>20%</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Secondary
affected services overlap (Jaccard similarity)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>10%</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Time-of-day
/ day-of-week pattern</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>5%</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Environment
match</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>5%</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>An incident is considered a
recurrence when the composite similarity score exceeds 0.75. The on-call
engineer is notified: "This appears to be a recurrence of INC-2024-001
(similarity: 87%). Suggested resolution: [link to playbook]."</span></p>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>11. Token Efficiency Strategy</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>Token efficiency is not a
nice-to-have — it is the primary value proposition of LeanKG for teams using
Cursor. Every architectural decision must be evaluated against its impact on
token cost per AI task.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>11.1 Context Budget Model</h2>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>LeanKG v2.0 introduces a Context
Budget — a configurable maximum token count for any single KG query response.
The default budget is 4,000 tokens. The query engine is responsible for fitting
the most relevant subgraph within this budget.</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Budget
Tier</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Use Case
& Token Limit</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Nano (≤
500 tokens)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Quick
lookups: "what team owns this service?" / "is this endpoint
deprecated?" Returns a single entity with key properties only.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Micro (≤
2,000 tokens)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Single-service
context: dependencies, APIs, owner, known issues. Sufficient for most
single-file edits.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Standard
(≤ 4,000 tokens)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Feature-level
context: all services in a domain, their relationships, recent incidents.
Sufficient for cross-service feature work.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Extended
(≤ 8,000 tokens)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Architecture-level
context: full workflow traces, impact radii, environment diffs. Used for
large refactors or incident investigation.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Full (≤
16,000 tokens)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Reserved
for architectural review queries. Requires explicit opt-in. Never used as
default.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>11.2 Context Compression Techniques</h2>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Property filtering: Only
include entity properties that are relevant to the query context. A "trace
the checkout flow" query does not need database host names.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Edge pruning: Include only
edges within the requested depth. Default depth is 2 hops from the seed entity.
Deeper hops are summarized as counts ("3 more services in layer 3").</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Semantic deduplication:
When two entities in the result are semantically nearly identical (e.g., two
versions of the same service), they are merged with a delta summary.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Annotation summarization:
Long CodeAnnotations and TeamKnowledge entries are summarized to 1–2 sentences
by the LLM gateway before inclusion in the context response.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Progressive disclosure: The
API returns context in tiers. Cursor receives Tier 1 first (entity names +
relationships). If the AI agent determines it needs more detail on a specific
node, it makes a follow-up drill-down query for that node only.</span></p>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>12. Cursor AI Integration</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<h2>12.1 Team-Wide MCP Configuration</h2>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>Instead of each engineer
configuring their own local LeanKG MCP server (as in v0.5.9), the team
maintains a single shared MCP endpoint. Engineers add the following to their
Cursor workspace .cursorrules or the team-wide cursor-team.json:</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#2E86C1;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><b><span style='color:white'>Cursor MCP Configuration
(cursor-team.json)</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F2F3F4;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>{</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F2F3F4;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'><span
style='mso-spacerun:yes'> </span>"mcpServers": {</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F2F3F4;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'><span
style='mso-spacerun:yes'> </span>"leankg": {</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F2F3F4;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'><span
style='mso-spacerun:yes'> </span>"url":
"http://internal.leankg.company.com:7700/mcp",</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F2F3F4;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'><span
style='mso-spacerun:yes'> </span>"auth": { "type":
"bearer", "token": "${LEANKG_TOKEN}" },</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F2F3F4;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'><span
style='mso-spacerun:yes'> </span>"env":
"production",</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F2F3F4;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'><span
style='mso-spacerun:yes'> </span>"localOverride": true</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F2F3F4;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'><span
style='mso-spacerun:yes'> </span>}</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:9'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F2F3F4;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'><span
style='mso-spacerun:yes'> </span>}</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:10'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F2F3F4;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>}</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:11'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F2F3F4;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><o:p> </o:p></p>
</td>
</tr>
<tr style='mso-yfti-irow:12'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F2F3F4;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>#
localOverride: true means Cursor will first check the shared KG,</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:13;mso-yfti-lastrow:yes'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#F2F3F4;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'># then
blend in local graph data for the current repository.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>12.2 Mandatory LeanKG-First Instruction</h2>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>The following instruction is
distributed to all team members' .cursorrules files and enforced via the leankg
install cursor command:</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#2E86C1;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><b><span style='color:white'>AGENTS.md — Mandatory
LeanKG-First Rule (Cursor)</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>##
MANDATORY: Use LeanKG Before Anything Else</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><o:p> </o:p></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Before
ANY codebase navigation, search, or context-gathering:</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>1. Call
kg_context(query, env) — this is ALWAYS your first tool call</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>2. Use
kg_impact() before any refactor to understand blast radius</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>3. Use
kg_incident_lookup() when you see error messages or alerts</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>4. Use
kg_trace_workflow() when asked about business processes</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><o:p> </o:p></p>
</td>
</tr>
<tr style='mso-yfti-irow:9'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NEVER
grep, read_file, or list_directory before calling LeanKG.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:10'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>LeanKG
context is 10–100× cheaper than raw file scanning.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:11'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><o:p> </o:p></p>
</td>
</tr>
<tr style='mso-yfti-irow:12'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>When
LeanKG returns context, trust it. Only fall back to</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:13'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>direct
file reading when LeanKG explicitly says "entity not indexed".</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:14'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><o:p> </o:p></p>
</td>
</tr>
<tr style='mso-yfti-irow:15;mso-yfti-lastrow:yes'>
<td width=624 valign=top style='width:468.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#D6EAF8;padding:3.0pt 6.0pt 3.0pt 8.0pt'>
<p class=MsoNormal style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>ALWAYS
use env="production" unless the user specifies staging or local.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>13. Team Knowledge Contribution Model</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>For the shared KG to remain
valuable, it must be easy for every team member to contribute to it. LeanKG
v2.0 provides multiple contribution surfaces — from fully automated (CI/CD
indexing) to highly human-guided (incident documentation).</span></p>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>13.1 Contribution Surfaces</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Contribution
Surface</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>How It
Works</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Automatic:
CI/CD Webhook</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Every
deployment triggers the LeanKG indexer. All code entities are re-indexed,
ChangeEvents are created, and environment subgraphs are updated. Zero human
effort.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Automatic:
PR Merge Hook</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>When a PR
merges, the indexer diffs the graph: new functions, deleted functions,
changed API contracts, new dependencies. Breaking changes in API contracts
trigger a BREAKING_CHANGE_WARNING annotation.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Semi-automatic:
Incident Resolution Flow</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Guided
form at incident close. Requires the on-call engineer to fill in root cause
and resolution. LLM pre-populates fields based on the incident timeline;
engineer approves or edits.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Manual:
Cursor In-Session Annotation</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Engineer
types in Cursor: "LeanKG: annotate this function — it MUST not be called
concurrently, there is a known race condition." LeanKG calls
kg_annotate() and creates a WARNING annotation.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Manual:
ADR Registration</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Architect
submits ADR via leankg adr create or the Web UI. LeanKG links it to affected
services and functions automatically using entity extraction.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Manual:
Runbook Creation</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Via Web
UI or leankg runbook create. Steps can reference entity GIDs directly,
enabling the KG to link runbook steps to the exact service components they
affect.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Manual:
TeamKnowledge Nugget</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Any
engineer can submit tribal knowledge via leankg know "never deploy
payment-service on Fridays — the settlement batch starts at 23:00 UTC and a
deploy mid-batch causes double-charges."</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>13.2 Knowledge Quality Gates</h2>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:5.0pt;
margin-left:0cm'><span style='color:#2C3E50'>As the shared KG grows, quality
control becomes critical. LeanKG v2.0 introduces quality gates at the
contribution layer:</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Confidence scoring: Every
entity and annotation has a confidence score. Auto-indexed code entities start
at 0.95 (high, because they are deterministic). LLM-extracted entities from
incident reports start at 0.65 and must be reviewed.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Staleness detection:
Entities not updated in 90 days receive a STALE warning. The owning team
receives a weekly digest of stale KG nodes in their services.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Contradiction alerts:
Graphiti's contradiction detection flags when a new annotation directly
contradicts an existing one. Both are preserved but flagged for resolution.</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Curation queue: The LeanKG
Web UI includes a curation queue where Admins and Leads can review, promote,
edit, or reject pending annotations and knowledge contributions.</span></p>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>14. Functional Requirements</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<h2>14.1 Core Requirements</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>ID</span></b></p>
</td>
<td width=96 valign=top style='width:72.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Category</span></b></p>
</td>
<td width=240 valign=top style='width:180.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Requirement</span></b></p>
</td>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Priority</span></b></p>
</td>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Source</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-01</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Shared
Service</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>leankg-server
MUST expose a REST API and MCP endpoint accessible to all engineers on the
internal network</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P0</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-01</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-02</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Shared
Service</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>All
engineers' Cursor instances MUST be configurable to point to the shared MCP
server as a team-managed default</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P0</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>US-01</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-03</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Environment</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The KG
MUST maintain three isolated subgraphs: production, staging, and
local:[engineer_id]</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P0</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-03</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-04</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Environment</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The query
API MUST support env parameter on all endpoints and default to production</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P0</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-03</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-05</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Environment</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Environment
inheritance MUST fall through local → staging → production when an entity is
not found</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P1</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>8.2</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-06</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Indexing</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The CI/CD
webhook integration MUST automatically update the production and staging
subgraphs within 5 minutes of a deployment</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P0</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-03</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-07</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Indexing</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The
indexer MUST support Go, TypeScript, Python, Rust, and Java as primary
languages</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P0</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Current
v0.5.9</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-08</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Indexing</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Breaking
API contract changes MUST generate a BREAKING_CHANGE_WARNING annotation
automatically detectable by Cursor</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P1</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>US-03</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:9'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-09</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incidents</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The
system MUST support creating, documenting, and resolving incident records via
API, Web UI, and CLI</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P0</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-04</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:10'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-10</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incidents</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>On
incident resolution, the system MUST auto-propagate updates to related
Playbook, KnownIssue, and IncidentResponsePlaybook nodes</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P0</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-04</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:11'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-11</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incidents</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The
system MUST compute a recurrence fingerprint for every new incident and
surface matching past incidents with similarity score</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P0</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>10.2</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:12'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-12</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Graphiti</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The
shared server MUST use Graphiti + Neo4j as the graph store backend</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P0</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-05</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:13'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-13</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Graphiti</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The
system MUST support temporal queries ("what did service X look like on
date Y?") via Graphiti bi-temporal indexing</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P1</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-05</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:14'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-14</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Contribution</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Engineers
MUST be able to add annotations to any entity from within a Cursor session
via kg_annotate MCP tool</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P1</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-06</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:15'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-15</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Token
Efficiency</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>All MCP
tool responses MUST fit within the configured Context Budget (default 4,000
tokens)</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P0</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>G-07</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:16'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-16</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Token
Efficiency</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The query
engine MUST support progressive disclosure: return Tier 1 context first, with
drill-down available for specific nodes</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P1</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>11.2</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:17'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-17</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Auth</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The
shared server MUST enforce JWT-based authentication with RBAC roles: Reader,
Contributor, Admin</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P0</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>9.1.1</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:18;mso-yfti-lastrow:yes'>
<td width=120 valign=top style='width:90.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>FR-18</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Legacy
Support</span></p>
</td>
<td width=240 valign=top style='width:180.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The
system MUST support manual annotation of legacy code entities that cannot be
auto-indexed (e.g., undocumented COBOL modules, binary services)</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>P2</span></p>
</td>
<td width=48 valign=top style='width:36.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Problem
Statement</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>15. Non-Functional Requirements</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>ID</span></b></p>
</td>
<td width=96 valign=top style='width:72.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Category</span></b></p>
</td>
<td width=312 valign=top style='width:234.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Requirement</span></b></p>
</td>
<td width=168 valign=top style='width:126.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Target</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-01</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Performance</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>MCP tool
response time (p50)</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>< 50ms</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-02</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Performance</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>MCP tool
response time (p99)</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'><
200ms</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-03</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Performance</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Impact
radius computation for any service in a 200-service graph</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'><
500ms</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-04</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Performance</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Incident
fingerprint lookup</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'><
100ms</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-05</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Availability</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Shared KG
service uptime SLA</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>99.5%</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-06</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Scalability</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Graph
node capacity without performance degradation</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>10
million nodes</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-07</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Scalability</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Concurrent
MCP client connections</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>500
simultaneous</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-08</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Freshness</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Max lag
from CI/CD deploy to graph update</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>< 5
minutes</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:9'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-09</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Security</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>All API
traffic must be TLS 1.3 encrypted</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Mandatory</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:10'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-10</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Security</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>PII-flagged
DataEntity nodes must be access-controlled to Contributor+ only</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Mandatory</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:11'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-11</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Security</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>All graph
writes must be audited with engineer identity and timestamp</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Mandatory</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:12'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-12</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Reliability</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The local
CLI mode (CozoDB) must function fully offline</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Mandatory</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:13'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-13</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Reliability</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>If the
shared KG service is unavailable, Cursor must gracefully degrade to the local
CozoDB cache</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Mandatory</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:14'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-14</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Data
Retention</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>All
temporal graph history retained for minimum 2 years</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Mandatory</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:15;mso-yfti-lastrow:yes'>
<td width=48 valign=top style='width:36.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>NFR-15</span></p>
</td>
<td width=96 valign=top style='width:72.0pt;border-top:none;border-left:none;
border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Observability</span></p>
</td>
<td width=312 valign=top style='width:234.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>All MCP
queries logged with: engineer_id, query, tokens_returned, latency, env</span></p>
</td>
<td width=168 valign=top style='width:126.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Mandatory</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>16. Migration Plan: CozoDB → Graphiti</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Phase</span></b></p>
</td>
<td width=232 valign=top style='width:174.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Duration</span></b></p>
</td>
<td width=232 valign=top style='width:174.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Work
Items</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Phase 0:
Preparation</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>2 weeks</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Define
GraphStore trait in Rust. Refactor current CozoDB calls to implement this
trait. Write integration tests against the trait interface. No behavior
change.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Phase 1:
Graphiti Server Bootstrap</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>3 weeks</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Stand up
Neo4j 5.x + Graphiti in Docker Compose. Build leankg-server (FastAPI) with
core REST and MCP endpoints. Implement entity schema in Graphiti matching
current CozoDB schema. Write data migration script to export CozoDB snapshot
and import to Graphiti.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Phase 2:
Indexer Integration</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>3 weeks</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Port Rust
indexer to write to leankg-server REST API instead of local CozoDB. Implement
CI/CD webhook receiver. Implement environment-scoped write paths. Test with
production codebase (shadow mode — write to both CozoDB and Graphiti, compare
results).</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Phase 3:
Temporal Features</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>2 weeks</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Enable
Graphiti bi-temporal indexing. Implement ChangeEvent creation on every write.
Build temporal query API endpoints. Implement leankg history command.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Phase 4:
Incident Loop</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>3 weeks</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Implement
Incident entity CRUD. Implement recurrence fingerprint algorithm using
Graphiti vector search. Build incident resolution propagation workflow. Build
Web UI incident documentation interface.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Phase 5:
Team Rollout</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>2 weeks</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Deploy
shared leankg-server to internal infrastructure. Distribute team Cursor MCP
configuration. Run 2-week parallel operation (both CozoDB local and Graphiti
shared active). Collect engineer feedback. Cut over to Graphiti as primary.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7;mso-yfti-lastrow:yes'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Phase 6:
CozoDB Deprecation (Soft)</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>4 weeks
post-rollout</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Retain
CozoDB for offline-only mode (no shared features). Remove CozoDB from
server-mode code path. Update documentation and install scripts.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=72 style='width:54.0pt;border:solid #AED6F1 1.0pt;mso-border-alt:
solid #AED6F1 .25pt;background:#C0392B;padding:4.0pt 5.0pt 4.0pt 5.0pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:9.0pt;color:white'>RISK</span></b></p>
</td>
<td width=552 valign=top style='width:414.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#FADBD8;padding:4.0pt 6.0pt 4.0pt 8.0pt'>
<p class=MsoNormal><span style='font-size:10.0pt;color:#2C3E50'>The largest
migration risk is correctness: Graphiti's entity extraction may produce a
graph that differs from the deterministic tree-sitter + CozoDB graph. Shadow
mode comparison in Phase 2 is critical. Define a diff coverage target of <
2% unexplained discrepancies before cutting over.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>17. Roadmap</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Milestone</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Target
Date & Deliverables</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>v0.5.x
(Current)</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Local-first
CozoDB, tree-sitter indexing, MCP for Cursor/Claude Code/OpenCode, 25.6%
token savings. [DONE — Released March 2026]</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>v1.0 —
Shared Service Alpha</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Q2 2026
(July). leankg-server (FastAPI + Graphiti + Neo4j). REST API + MCP shared
endpoint. Production environment subgraph. CI/CD webhook integration (GitHub
Actions, GitLab CI). JWT auth. Internal team alpha test (5 engineers).</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>v1.1 —
Three Environments</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Q2 2026
(August). Staging + local environment subgraphs. Environment inheritance
fallthrough. Environment diff API. Local sync agent (leankg sync). Web UI
environment switcher.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>v1.2 —
Incident Loop MVP</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Q3 2026
(September). Incident entity CRUD. Recurrence fingerprint v1 (structural
only). Incident resolution propagation. kg_incident_lookup MCP tool. Web UI
incident documentation flow.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>v2.0 —
Full Platform</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Q3 2026
(October). Temporal queries (Graphiti bi-temporal). Semantic fingerprinting
(vector embeddings). Full Concept + Procedural Ontology. Workflow + Playbook
entities. IncidentResponsePlaybook auto-generation. Context Budget with
progressive disclosure. Team-wide rollout.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>v2.1 —
Legacy Codebase Support</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Q4 2026
(November). Manual entity creation for unindexable legacy services.
Binary/undocumented service stubs. Legacy annotation import from
Confluence/Notion. Cross-language dependency tracing (Go → Python → Java).</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>v2.2 —
Intelligence Layer</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Q4 2026
(December). AI-assisted ADR generation from code patterns. Automatic
DevelopmentProcedure extraction from PR descriptions. Proactive conflict
detection (your PR will break 3 downstream services). Knowledge health
dashboard.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>v3.0 —
Multi-Team Federation</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Q1 2027.
Federated KG across multiple internal teams. Cross-team shared knowledge with
permission boundaries. External dependency tracking (vendor SLAs, API
versioning). Public-facing KG export (anonymized for open-source
contributions).</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<span style='font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
Arial;mso-ansi-language:#0C00;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA'><br clear=all style='mso-special-character:line-break;page-break-before:
always'>
</span>
<p class=MsoNormal><o:p> </o:p></p>
<h1>18. Appendix</h1>
<div style='mso-element:para-border-div;border:none;border-bottom:solid #2E86C1 1.0pt;
mso-border-bottom-alt:solid #2E86C1 .75pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='margin-top:4.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;border:none;mso-border-bottom-alt:solid #2E86C1 .75pt;
padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><o:p> </o:p></p>
</div>
<h2>18.1 Glossary</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Term</span></b></p>
</td>
<td width=416 valign=top style='width:312.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Definition</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>ADR</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Architectural
Decision Record — a document capturing an architectural decision, its
context, and consequences.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Bi-temporal
indexing</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Storing
two time axes for every data point: valid_time (when the fact was true in the
world) and transaction_time (when it was recorded in the database).</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Blast
Radius</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The set
of all services, functions, and tests that would be affected by a change to a
given entity. Computed by traversing DEPENDS_ON, CALLS, and CONSUMES_FROM
edges.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Context
Budget</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>A maximum
token count for any single KG query response. Ensures AI agents receive
focused, affordable context.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>CozoDB</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>An
embedded, Datalog-powered graph/relational database used in LeanKG v0.x.
Local-first, zero-dependency.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:6'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>GID</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Global ID
— a universally unique identifier for any entity in the KG. Format:
[org]:[env]:[service]:[type]:[name]:[version].</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:7'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Graphiti</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>An
open-source temporal knowledge graph framework by Zep AI, built on Neo4j,
with LLM-native entity extraction and bi-temporal indexing.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:8'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>MCP</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Model
Context Protocol — a standard protocol for AI coding tools (Cursor, Claude
Code) to call external tools and retrieve context.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:9'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Ontology</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>A formal,
structured description of the concepts, categories, and relationships within
a knowledge domain.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:10'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Procedural
Ontology</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The part
of the ontology that describes processes, workflows, and sequences of actions
(the "how").</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:11'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Concept
Ontology</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>The part
of the ontology that describes entities, categories, and static relationships
(the "what").</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:12'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Progressive
Disclosure</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>A query
strategy where high-level context is returned first, with drill-down
available for specific nodes to avoid token waste.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:13'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Recurrence
Fingerprint</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>A
composite similarity score used to match new incidents against past incidents
to detect recurrences.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:14'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Subgraph</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>A subset
of the full knowledge graph, filtered by entity type, environment, depth, or
other criteria.</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:15;mso-yfti-lastrow:yes'>
<td width=208 valign=top style='width:156.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Temporal
Query</span></p>
</td>
<td width=416 valign=top style='width:312.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>A query
that retrieves the state of the graph at a specific point in time, enabled by
Graphiti's bi-temporal indexing.</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:4.0pt'><o:p> </o:p></p>
<h2>18.2 References</h2>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>LeanKG GitHub Repository:
https://github.com/FreePeak/LeanKG</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Graphiti by Zep AI:
https://github.com/getzep/graphiti</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Neo4j 5.x Documentation:
https://neo4j.com/docs/</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>CozoDB Documentation:
https://docs.cozodb.org/</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Model Context Protocol
Specification: https://modelcontextprotocol.io/</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>Tree-sitter Parsers:
https://tree-sitter.github.io/</span></p>
<p class=MsoListParagraph style='margin-top:2.0pt;margin-right:0cm;margin-bottom:
2.0pt;margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
style='mso-list:Ignore'>•<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span style='color:#2C3E50'>FastAPI Documentation:
https://fastapi.tiangolo.com/</span></p>
<p class=MsoNormal style='margin-top:8.0pt'><o:p> </o:p></p>
<h2>18.3 Document Control</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=624
style='width:468.0pt;border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm .5pt 0cm .5pt;mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
mso-border-alt:solid #AED6F1 .25pt;background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Version</span></b></p>
</td>
<td width=232 valign=top style='width:174.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Date</span></b></p>
</td>
<td width=232 valign=top style='width:174.0pt;border:solid #AED6F1 1.0pt;
border-left:none;mso-border-left-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#1B4F72;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><b><span style='font-size:10.0pt;color:white'>Changes</span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>1.0</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>May 2026</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:white;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Initial
PRD draft</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
<td width=160 valign=top style='width:120.0pt;border:solid #AED6F1 1.0pt;
border-top:none;mso-border-top-alt:solid #AED6F1 .25pt;mso-border-alt:solid #AED6F1 .25pt;
background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>2.0</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>May 2026</span></p>
</td>
<td width=232 valign=top style='width:174.0pt;border-top:none;border-left:
none;border-bottom:solid #AED6F1 1.0pt;border-right:solid #AED6F1 1.0pt;
mso-border-top-alt:solid #AED6F1 .25pt;mso-border-left-alt:solid #AED6F1 .25pt;
mso-border-alt:solid #AED6F1 .25pt;background:#EBF5FB;padding:4.0pt 6.0pt 4.0pt 6.0pt'>
<p class=MsoNormal style='margin-top:3.0pt;margin-right:0cm;margin-bottom:
3.0pt;margin-left:0cm'><span style='font-size:10.0pt;color:#2C3E50'>Added:
3-environment model, Graphiti migration analysis, Procedural Ontology deep
dive, Incident Knowledge Loop, Token Efficiency Strategy, Team Contribution
Model, full Functional and Non-Functional Requirements, Migration Plan,
detailed Roadmap</span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-top:10.0pt'><o:p> </o:p></p>
<p class=MsoNormal align=center style='text-align:center'><i><span
style='font-size:10.0pt;color:#566573'>— End of Document —</span></i></p>
</div>
</body>
</html>