- Create Economist SubmissionTracking package correctly: * mainArticle = full blog post content * coverLetter = 216-word SIR— letter * Links to blog post via blogPostId - Archive 'Letter to The Economist' from blog posts (it's the cover letter) - Fix date display on article cards (use published_at) - Target publication already displaying via blue badge Database changes: - Make blogPostId optional in SubmissionTracking model - Economist package ID: 68fa85ae49d4900e7f2ecd83 - Le Monde package ID: 68fa2abd2e6acd5691932150 Next: Enhanced modal with tabs, validation, export 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 line
No EOL
33 KiB
XML
1 line
No EOL
33 KiB
XML
<svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 1767.77px; background-color: transparent;" viewBox="0 0 1767.7734375 1454" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#666;stroke:#666;}#my-svg .marker.cross{stroke:#666;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#000000;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#000000;color:#000000;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#eee;stroke:#999;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#666;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:#666;fill:none;}#my-svg .edgeLabel{background-color:white;text-align:center;}#my-svg .edgeLabel p{background-color:white;}#my-svg .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:white;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:white;padding:2px;}#my-svg .icon-shape rect,#my-svg .image-shape rect{opacity:0.5;background-color:white;fill:white;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#my-svg .api>*{fill:#f3e8ff!important;stroke:#a855f7!important;stroke-width:2px!important;}#my-svg .api span{fill:#f3e8ff!important;stroke:#a855f7!important;stroke-width:2px!important;}#my-svg .governance>*{fill:#f0fdf4!important;stroke:#10b981!important;stroke-width:2px!important;}#my-svg .governance span{fill:#f0fdf4!important;stroke:#10b981!important;stroke-width:2px!important;}#my-svg .persistence>*{fill:#fef9c3!important;stroke:#eab308!important;stroke-width:2px!important;}#my-svg .persistence span{fill:#fef9c3!important;stroke:#eab308!important;stroke-width:2px!important;}#my-svg .runtime>*{fill:#dbeafe!important;stroke:#3b82f6!important;stroke-width:2px!important;}#my-svg .runtime span{fill:#dbeafe!important;stroke:#3b82f6!important;stroke-width:2px!important;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"><g class="cluster" id="subGraph3" data-look="classic"><rect style="" x="99.2734375" y="1102" width="1569.6640625" height="344"/><g class="cluster-label" transform="translate(784.10546875, 1102)"><foreignObject width="200" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p>Claude Code Runtime Environment</p></span></div></foreignObject></g></g><g class="cluster" id="subGraph2" data-look="classic"><rect style="" x="8" y="804" width="1723.140625" height="248"/><g class="cluster-label" transform="translate(772.4453125, 804)"><foreignObject width="194.25" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>MongoDB Persistence Layer</p></span></div></foreignObject></g></g><g class="cluster" id="subGraph1" data-look="classic"><rect style="" x="54.71875" y="306" width="1705.0546875" height="448"/><g class="cluster-label" transform="translate(807.24609375, 306)"><foreignObject width="200" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p>Tractatus Governance Layer</p></span></div></foreignObject></g></g><g class="cluster" id="subGraph0" data-look="classic"><rect style="" x="145.8515625" y="8" width="1566.83984375" height="248"/><g class="cluster-label" transform="translate(834.904296875, 8)"><foreignObject width="188.734375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>API & Web Interface Layer</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M452.469,180.247L418.449,192.872C384.43,205.498,316.391,230.749,282.371,247.541C248.352,264.333,248.352,272.667,248.352,281C248.352,289.333,248.352,297.667,248.352,307.333C248.352,317,248.352,328,248.352,333.5L248.352,339" id="L_API_BE_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_API_BE_0" data-points="W3sieCI6NDUyLjQ2ODc1LCJ5IjoxODAuMjQ2NTQ1MjMzNDc0NDJ9LHsieCI6MjQ4LjM1MTU2MjUsInkiOjI1Nn0seyJ4IjoyNDguMzUxNTYyNSwieSI6MjgxfSx7IngiOjI0OC4zNTE1NjI1LCJ5IjozMDZ9LHsieCI6MjQ4LjM1MTU2MjUsInkiOjM0M31d" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M712.469,169.319L762.794,183.766C813.12,198.213,913.771,227.106,964.096,245.72C1014.422,264.333,1014.422,272.667,1014.422,281C1014.422,289.333,1014.422,297.667,1014.422,320.5C1014.422,343.333,1014.422,380.667,1014.422,418C1014.422,455.333,1014.422,492.667,1014.422,516.833C1014.422,541,1014.422,552,1014.422,557.5L1014.422,563" id="L_API_IPC_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_API_IPC_0" data-points="W3sieCI6NzEyLjQ2ODc1LCJ5IjoxNjkuMzE4ODY0MTcwNzM2MX0seyJ4IjoxMDE0LjQyMTg3NSwieSI6MjU2fSx7IngiOjEwMTQuNDIxODc1LCJ5IjoyODF9LHsieCI6MTAxNC40MjE4NzUsInkiOjMwNn0seyJ4IjoxMDE0LjQyMTg3NSwieSI6NDE4fSx7IngiOjEwMTQuNDIxODc1LCJ5Ijo1MzB9LHsieCI6MTAxNC40MjE4NzUsInkiOjU2N31d" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1416.309,201.568L1403.921,210.64C1391.534,219.712,1366.759,237.856,1354.372,251.095C1341.984,264.333,1341.984,272.667,1341.984,281C1341.984,289.333,1341.984,297.667,1341.984,320.5C1341.984,343.333,1341.984,380.667,1341.984,418C1341.984,455.333,1341.984,492.667,1341.984,514.833C1341.984,537,1341.984,544,1341.984,547.5L1341.984,551" id="L_WEB_CRV_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_WEB_CRV_0" data-points="W3sieCI6MTQxNi4zMDg1OTM3NSwieSI6MjAxLjU2ODE2MjQxNzgxMDU4fSx7IngiOjEzNDEuOTg0Mzc1LCJ5IjoyNTZ9LHsieCI6MTM0MS45ODQzNzUsInkiOjI4MX0seyJ4IjoxMzQxLjk4NDM3NSwieSI6MzA2fSx7IngiOjEzNDEuOTg0Mzc1LCJ5Ijo0MTh9LHsieCI6MTM0MS45ODQzNzUsInkiOjUzMH0seyJ4IjoxMzQxLjk4NDM3NSwieSI6NTU1fV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1561.788,207L1567.286,215.167C1572.783,223.333,1583.778,239.667,1589.276,252C1594.773,264.333,1594.773,272.667,1594.773,281C1594.773,289.333,1594.773,297.667,1594.773,305.333C1594.773,313,1594.773,320,1594.773,323.5L1594.773,327" id="L_WEB_CPM_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_WEB_CPM_0" data-points="W3sieCI6MTU2MS43ODgyNzQ5NDk1OTY4LCJ5IjoyMDd9LHsieCI6MTU5NC43NzM0Mzc1LCJ5IjoyNTZ9LHsieCI6MTU5NC43NzM0Mzc1LCJ5IjoyODF9LHsieCI6MTU5NC43NzM0Mzc1LCJ5IjozMDZ9LHsieCI6MTU5NC43NzM0Mzc1LCJ5IjozMzF9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M182.836,493L177.45,499.167C172.063,505.333,161.289,517.667,155.902,542.5C150.516,567.333,150.516,604.667,150.516,642C150.516,679.333,150.516,716.667,150.516,739.5C150.516,762.333,150.516,770.667,150.516,779C150.516,787.333,150.516,795.667,150.516,803.333C150.516,811,150.516,818,150.516,821.5L150.516,825" id="L_BE_GR_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_BE_GR_0" data-points="W3sieCI6MTgyLjgzNjQyNTc4MTI1LCJ5Ijo0OTN9LHsieCI6MTUwLjUxNTYyNSwieSI6NTMwfSx7IngiOjE1MC41MTU2MjUsInkiOjY0Mn0seyJ4IjoxNTAuNTE1NjI1LCJ5Ijo3NTR9LHsieCI6MTUwLjUxNTYyNSwieSI6Nzc5fSx7IngiOjE1MC41MTU2MjUsInkiOjgwNH0seyJ4IjoxNTAuNTE1NjI1LCJ5Ijo4Mjl9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M313.867,493L319.253,499.167C324.64,505.333,335.414,517.667,340.801,529.333C346.188,541,346.188,552,346.188,557.5L346.188,563" id="L_BE_PDO_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_BE_PDO_0" data-points="W3sieCI6MzEzLjg2NjY5OTIxODc1LCJ5Ijo0OTN9LHsieCI6MzQ2LjE4NzUsInkiOjUzMH0seyJ4IjozNDYuMTg3NSwieSI6NTY3fV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1014.422,717L1014.422,723.167C1014.422,729.333,1014.422,741.667,1014.422,752C1014.422,762.333,1014.422,770.667,1014.422,779C1014.422,787.333,1014.422,795.667,981.118,812.441C947.815,829.214,881.207,854.429,847.904,867.036L814.6,879.643" id="L_IPC_AL_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IPC_AL_0" data-points="W3sieCI6MTAxNC40MjE4NzUsInkiOjcxN30seyJ4IjoxMDE0LjQyMTg3NSwieSI6NzU0fSx7IngiOjEwMTQuNDIxODc1LCJ5Ijo3Nzl9LHsieCI6MTAxNC40MjE4NzUsInkiOjgwNH0seyJ4Ijo4MTAuODU5Mzc1LCJ5Ijo4ODEuMDU5MzM5ODIwNjQ0OX1d" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1341.984,729L1341.984,733.167C1341.984,737.333,1341.984,745.667,1341.984,754C1341.984,762.333,1341.984,770.667,1341.984,779C1341.984,787.333,1341.984,795.667,1341.984,803.333C1341.984,811,1341.984,818,1341.984,821.5L1341.984,825" id="L_CRV_IH_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CRV_IH_0" data-points="W3sieCI6MTM0MS45ODQzNzUsInkiOjcyOX0seyJ4IjoxMzQxLjk4NDM3NSwieSI6NzU0fSx7IngiOjEzNDEuOTg0Mzc1LCJ5Ijo3Nzl9LHsieCI6MTM0MS45ODQzNzUsInkiOjgwNH0seyJ4IjoxMzQxLjk4NDM3NSwieSI6ODI5fV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1594.773,505L1594.773,509.167C1594.773,513.333,1594.773,521.667,1594.773,544.5C1594.773,567.333,1594.773,604.667,1594.773,642C1594.773,679.333,1594.773,716.667,1594.773,739.5C1594.773,762.333,1594.773,770.667,1594.773,779C1594.773,787.333,1594.773,795.667,1594.773,803.333C1594.773,811,1594.773,818,1594.773,821.5L1594.773,825" id="L_CPM_SS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CPM_SS_0" data-points="W3sieCI6MTU5NC43NzM0Mzc1LCJ5Ijo1MDV9LHsieCI6MTU5NC43NzM0Mzc1LCJ5Ijo1MzB9LHsieCI6MTU5NC43NzM0Mzc1LCJ5Ijo2NDJ9LHsieCI6MTU5NC43NzM0Mzc1LCJ5Ijo3NTR9LHsieCI6MTU5NC43NzM0Mzc1LCJ5Ijo3Nzl9LHsieCI6MTU5NC43NzM0Mzc1LCJ5Ijo4MDR9LHsieCI6MTU5NC43NzM0Mzc1LCJ5Ijo4Mjl9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M686.859,729L686.859,733.167C686.859,737.333,686.859,745.667,686.859,754C686.859,762.333,686.859,770.667,686.859,779C686.859,787.333,686.859,795.667,686.859,803.333C686.859,811,686.859,818,686.859,821.5L686.859,825" id="L_MV_AL_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MV_AL_0" data-points="W3sieCI6Njg2Ljg1OTM3NSwieSI6NzI5fSx7IngiOjY4Ni44NTkzNzUsInkiOjc1NH0seyJ4Ijo2ODYuODU5Mzc1LCJ5Ijo3Nzl9LHsieCI6Njg2Ljg1OTM3NSwieSI6ODA0fSx7IngiOjY4Ni44NTkzNzUsInkiOjgyOX1d" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M346.188,717L346.188,723.167C346.188,729.333,346.188,741.667,346.188,752C346.188,762.333,346.188,770.667,346.188,779C346.188,787.333,346.188,795.667,381.673,812.75C417.159,829.833,488.13,855.665,523.615,868.581L559.101,881.498" id="L_PDO_AL_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_PDO_AL_0" data-points="W3sieCI6MzQ2LjE4NzUsInkiOjcxN30seyJ4IjozNDYuMTg3NSwieSI6NzU0fSx7IngiOjM0Ni4xODc1LCJ5Ijo3Nzl9LHsieCI6MzQ2LjE4NzUsInkiOjgwNH0seyJ4Ijo1NjIuODU5Mzc1LCJ5Ijo4ODIuODY1NjYwNjg4ODk2fV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M150.516,1027L150.516,1031.167C150.516,1035.333,150.516,1043.667,150.516,1052C150.516,1060.333,150.516,1068.667,150.516,1077C150.516,1085.333,150.516,1093.667,272.179,1122.056C393.843,1150.446,637.171,1198.891,758.835,1223.114L880.499,1247.337" id="L_GR_CC_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_GR_CC_0" data-points="W3sieCI6MTUwLjUxNTYyNSwieSI6MTAyN30seyJ4IjoxNTAuNTE1NjI1LCJ5IjoxMDUyfSx7IngiOjE1MC41MTU2MjUsInkiOjEwNzd9LHsieCI6MTUwLjUxNTYyNSwieSI6MTEwMn0seyJ4Ijo4ODQuNDIxODc1LCJ5IjoxMjQ4LjExNzU2MTk0NjEwMjN9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M686.859,1027L686.859,1031.167C686.859,1035.333,686.859,1043.667,686.859,1052C686.859,1060.333,686.859,1068.667,686.859,1077C686.859,1085.333,686.859,1093.667,719.196,1114.813C751.533,1135.96,816.207,1169.919,848.544,1186.899L880.88,1203.879" id="L_AL_CC_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_AL_CC_0" data-points="W3sieCI6Njg2Ljg1OTM3NSwieSI6MTAyN30seyJ4Ijo2ODYuODU5Mzc1LCJ5IjoxMDUyfSx7IngiOjY4Ni44NTkzNzUsInkiOjEwNzd9LHsieCI6Njg2Ljg1OTM3NSwieSI6MTEwMn0seyJ4Ijo4ODQuNDIxODc1LCJ5IjoxMjA1LjczODIxNzg5NzM0Nzh9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1594.773,1027L1594.773,1031.167C1594.773,1035.333,1594.773,1043.667,1594.773,1052C1594.773,1060.333,1594.773,1068.667,1594.773,1077C1594.773,1085.333,1594.773,1093.667,1520.354,1119.889C1445.935,1146.112,1297.096,1190.223,1222.676,1212.279L1148.257,1234.335" id="L_SS_CC_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SS_CC_0" data-points="W3sieCI6MTU5NC43NzM0Mzc1LCJ5IjoxMDI3fSx7IngiOjE1OTQuNzczNDM3NSwieSI6MTA1Mn0seyJ4IjoxNTk0Ljc3MzQzNzUsInkiOjEwNzd9LHsieCI6MTU5NC43NzM0Mzc1LCJ5IjoxMTAyfSx7IngiOjExNDQuNDIxODc1LCJ5IjoxMjM1LjQ3MTYyOTUzNDg5OTR9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1341.984,1027L1341.984,1031.167C1341.984,1035.333,1341.984,1043.667,1341.984,1052C1341.984,1060.333,1341.984,1068.667,1341.984,1077C1341.984,1085.333,1341.984,1093.667,1309.648,1114.813C1277.311,1135.96,1212.637,1169.919,1180.3,1186.899L1147.963,1203.879" id="L_IH_CC_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IH_CC_0" data-points="W3sieCI6MTM0MS45ODQzNzUsInkiOjEwMjd9LHsieCI6MTM0MS45ODQzNzUsInkiOjEwNTJ9LHsieCI6MTM0MS45ODQzNzUsInkiOjEwNzd9LHsieCI6MTM0MS45ODQzNzUsInkiOjExMDJ9LHsieCI6MTE0NC40MjE4NzUsInkiOjEyMDUuNzM4MjE3ODk3MzQ3OH1d" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_API_BE_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_API_IPC_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_WEB_CRV_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_WEB_CPM_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_BE_GR_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_BE_PDO_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IPC_AL_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_CRV_IH_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_CPM_SS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_MV_AL_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_PDO_AL_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_GR_CC_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_AL_CC_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_SS_CC_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IH_CC_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default api" id="flowchart-API-0" transform="translate(582.46875, 132)"><rect class="basic label-container" style="fill:#f3e8ff !important;stroke:#a855f7 !important;stroke-width:2px !important" x="-130" y="-99" width="260" height="198"/><g class="label" style="" transform="translate(-100, -84)"><rect/><foreignObject width="200" height="168"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p><b>API Endpoints</b><br />/api/demo/classify<br />/api/demo/boundary-check<br />/api/demo/pressure-check<br />/api/admin/* • /api/auth/*</p></span></div></foreignObject></g></g><g class="node default api" id="flowchart-WEB-1" transform="translate(1511.30078125, 132)"><rect class="basic label-container" style="fill:#f3e8ff !important;stroke:#a855f7 !important;stroke-width:2px !important" x="-94.9921875" y="-75" width="189.984375" height="150"/><g class="label" style="" transform="translate(-64.9921875, -60)"><rect/><foreignObject width="129.984375" height="120"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p><b>Web Interface</b><br />Interactive Demos<br />Admin Dashboard<br />Documentation<br />Blog System</p></span></div></foreignObject></g></g><g class="node default governance" id="flowchart-BE-2" transform="translate(248.3515625, 418)"><rect class="basic label-container" style="fill:#f0fdf4 !important;stroke:#10b981 !important;stroke-width:2px !important" x="-116.59375" y="-75" width="233.1875" height="150"/><g class="label" style="" transform="translate(-86.59375, -60)"><rect/><foreignObject width="173.1875" height="120"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p><b>BoundaryEnforcer</b><br />Blocks values decisions<br />• Privacy decisions<br />• Ethical trade-offs<br />• User agency violations</p></span></div></foreignObject></g></g><g class="node default governance" id="flowchart-IPC-3" transform="translate(1014.421875, 642)"><rect class="basic label-container" style="fill:#f0fdf4 !important;stroke:#10b981 !important;stroke-width:2px !important" x="-147.5625" y="-75" width="295.125" height="150"/><g class="label" style="" transform="translate(-117.5625, -60)"><rect/><foreignObject width="235.125" height="120"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p><b>InstructionPersistenceClassifier</b><br />Classifies & stores instructions<br />• Quadrant (STR/OPS/TAC/SYS)<br />• Persistence (HIGH/MED/LOW)<br />• Temporal scope</p></span></div></foreignObject></g></g><g class="node default governance" id="flowchart-CRV-4" transform="translate(1341.984375, 642)"><rect class="basic label-container" style="fill:#f0fdf4 !important;stroke:#10b981 !important;stroke-width:2px !important" x="-130" y="-87" width="260" height="174"/><g class="label" style="" transform="translate(-100, -72)"><rect/><foreignObject width="200" height="144"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p><b>CrossReferenceValidator</b><br />Prevents pattern bias override<br />• Checks instruction history<br />• Detects conflicts (27027)<br />• Blocks contradictions</p></span></div></foreignObject></g></g><g class="node default governance" id="flowchart-CPM-5" transform="translate(1594.7734375, 418)"><rect class="basic label-container" style="fill:#f0fdf4 !important;stroke:#10b981 !important;stroke-width:2px !important" x="-130" y="-87" width="260" height="174"/><g class="label" style="" transform="translate(-100, -72)"><rect/><foreignObject width="200" height="144"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p><b>ContextPressureMonitor</b><br />Detects degraded conditions<br />• Token budget tracking<br />• Error accumulation<br />• Checkpoint reporting</p></span></div></foreignObject></g></g><g class="node default governance" id="flowchart-MV-6" transform="translate(686.859375, 642)"><rect class="basic label-container" style="fill:#f0fdf4 !important;stroke:#10b981 !important;stroke-width:2px !important" x="-130" y="-87" width="260" height="174"/><g class="label" style="" transform="translate(-100, -72)"><rect/><foreignObject width="200" height="144"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p><b>MetacognitiveVerifier</b><br />Self-checks complex operations<br />• >3 files or >5 steps<br />• Architecture changes<br />• Confidence scoring</p></span></div></foreignObject></g></g><g class="node default governance" id="flowchart-PDO-7" transform="translate(346.1875, 642)"><rect class="basic label-container" style="fill:#f0fdf4 !important;stroke:#10b981 !important;stroke-width:2px !important" x="-160.671875" y="-75" width="321.34375" height="150"/><g class="label" style="" transform="translate(-130.671875, -60)"><rect/><foreignObject width="261.34375" height="120"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p><b>PluralisticDeliberationOrchestrator</b><br />Facilitates values deliberation<br />• Multi-stakeholder engagement<br />• Moral framework mapping<br />• Precedent documentation</p></span></div></foreignObject></g></g><g class="node default persistence" id="flowchart-GR-8" transform="translate(150.515625, 928)"><rect class="basic label-container" style="fill:#fef9c3 !important;stroke:#eab308 !important;stroke-width:2px !important" x="-107.515625" y="-99" width="215.03125" height="198"/><g class="label" style="" transform="translate(-77.515625, -84)"><rect/><foreignObject width="155.03125" height="168"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p><b>governance_rules</b><br />• rule_id (STR-001...)<br />• quadrant<br />• persistence level<br />• enforced_by<br />• violation_action<br />• active status</p></span></div></foreignObject></g></g><g class="node default persistence" id="flowchart-AL-9" transform="translate(686.859375, 928)"><rect class="basic label-container" style="fill:#fef9c3 !important;stroke:#eab308 !important;stroke-width:2px !important" x="-124" y="-99" width="248" height="198"/><g class="label" style="" transform="translate(-94, -84)"><rect/><foreignObject width="188" height="168"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p><b>audit_logs</b><br />• timestamp<br />• service (which enforcer)<br />• action (BLOCK/WARN)<br />• instruction<br />• rule_violated<br />• session_id</p></span></div></foreignObject></g></g><g class="node default persistence" id="flowchart-SS-10" transform="translate(1594.7734375, 928)"><rect class="basic label-container" style="fill:#fef9c3 !important;stroke:#eab308 !important;stroke-width:2px !important" x="-101.3671875" y="-99" width="202.734375" height="198"/><g class="label" style="" transform="translate(-71.3671875, -84)"><rect/><foreignObject width="142.734375" height="168"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p><b>session_state</b><br />• session_id<br />• token_count<br />• message_count<br />• pressure_level<br />• last_checkpoint<br />• framework_active</p></span></div></foreignObject></g></g><g class="node default persistence" id="flowchart-IH-11" transform="translate(1341.984375, 928)"><rect class="basic label-container" style="fill:#fef9c3 !important;stroke:#eab308 !important;stroke-width:2px !important" x="-101.421875" y="-99" width="202.84375" height="198"/><g class="label" style="" transform="translate(-71.421875, -84)"><rect/><foreignObject width="142.84375" height="168"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p><b>instruction_history</b><br />• instruction_id<br />• content<br />• classification<br />• persistence<br />• created_at<br />• active status</p></span></div></foreignObject></g></g><g class="node default runtime" id="flowchart-CC-12" transform="translate(1014.421875, 1274)"><rect class="basic label-container" style="fill:#dbeafe !important;stroke:#3b82f6 !important;stroke-width:2px !important" x="-130" y="-147" width="260" height="294"/><g class="label" style="" transform="translate(-100, -132)"><rect/><foreignObject width="200" height="264"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p><b>Base LLM Environment</b><br />Session Management • Tool Access<br />File System Operations<br />.claude/instruction-history.json<br />.claude/session-state.json<br />.claude/token-checkpoints.json<br /><i>Context Window (200k tokens)</i></p></span></div></foreignObject></g></g></g></g></g></svg> |