provisioning/docs/book/development/kcl/VALIDATION_INDEX.html
Jesús Pérez 6a59d34bb1
chore: update provisioning configuration and documentation
Update configuration files, templates, and internal documentation
for the provisioning repository system.

Configuration Updates:
- KMS configuration modernization
- Plugin system settings
- Service port mappings
- Test cluster topologies
- Installation configuration examples
- VM configuration defaults
- Cedar authorization policies

Documentation Updates:
- Library module documentation
- Extension API guides
- AI system documentation
- Service management guides
- Test environment setup
- Plugin usage guides
- Validator configuration documentation

All changes are backward compatible.
2025-12-11 21:50:42 +00:00

694 lines
32 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML>
<html lang="en" class="ayu sidebar-visible" dir="ltr">
<head>
<!-- Book generated using mdBook -->
<meta charset="UTF-8">
<title>KCL Validation Index - Provisioning Platform Documentation</title>
<!-- Custom HTML head -->
<meta name="description" content="Complete documentation for the Provisioning Platform - Infrastructure automation with Nushell, KCL, and Rust">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff">
<link rel="icon" href="../../favicon.svg">
<link rel="shortcut icon" href="../../favicon.png">
<link rel="stylesheet" href="../../css/variables.css">
<link rel="stylesheet" href="../../css/general.css">
<link rel="stylesheet" href="../../css/chrome.css">
<link rel="stylesheet" href="../../css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../../FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../../fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" id="highlight-css" href="../../highlight.css">
<link rel="stylesheet" id="tomorrow-night-css" href="../../tomorrow-night.css">
<link rel="stylesheet" id="ayu-highlight-css" href="../../ayu-highlight.css">
<!-- Custom theme stylesheets -->
<!-- Provide site root and default themes to javascript -->
<script>
const path_to_root = "../../";
const default_light_theme = "ayu";
const default_dark_theme = "navy";
</script>
<!-- Start loading toc.js asap -->
<script src="../../toc.js"></script>
</head>
<body>
<div id="mdbook-help-container">
<div id="mdbook-help-popup">
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
<div>
<p>Press <kbd></kbd> or <kbd></kbd> to navigate between chapters</p>
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
<p>Press <kbd>?</kbd> to show this help</p>
<p>Press <kbd>Esc</kbd> to hide this help</p>
</div>
</div>
</div>
<div id="body-container">
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script>
try {
let theme = localStorage.getItem('mdbook-theme');
let sidebar = localStorage.getItem('mdbook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
<!-- Set the theme before any content is loaded, prevents flash -->
<script>
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
let theme;
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
const html = document.documentElement;
html.classList.remove('ayu')
html.classList.add(theme);
html.classList.add("js");
</script>
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
<!-- Hide / unhide sidebar before it is displayed -->
<script>
let sidebar = null;
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
} else {
sidebar = 'hidden';
}
sidebar_toggle.checked = sidebar === 'visible';
html.classList.remove('sidebar-visible');
html.classList.add("sidebar-" + sidebar);
</script>
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
<!-- populated by js -->
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
<noscript>
<iframe class="sidebar-iframe-outer" src="../../toc.html"></iframe>
</noscript>
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
<div class="sidebar-resize-indicator"></div>
</div>
</nav>
<div id="page-wrapper" class="page-wrapper">
<div class="page">
<div id="menu-bar-hover-placeholder"></div>
<div id="menu-bar" class="menu-bar sticky">
<div class="left-buttons">
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
<i class="fa fa-bars"></i>
</label>
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
<i class="fa fa-paint-brush"></i>
</button>
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
</ul>
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
<i class="fa fa-search"></i>
</button>
</div>
<h1 class="menu-title">Provisioning Platform Documentation</h1>
<div class="right-buttons">
<a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i>
</a>
<a href="https://github.com/provisioning/provisioning-platform" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i>
</a>
<a href="https://github.com/provisioning/provisioning-platform/edit/main/provisioning/docs/src/development/kcl/VALIDATION_INDEX.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i>
</a>
</div>
</div>
<div id="search-wrapper" class="hidden">
<form id="searchbar-outer" class="searchbar-outer">
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
</form>
<div id="searchresults-outer" class="searchresults-outer hidden">
<div id="searchresults-header" class="searchresults-header"></div>
<ul id="searchresults">
</ul>
</div>
</div>
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script>
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
<div id="content" class="content">
<main>
<h1 id="kcl-validation---complete-index"><a class="header" href="#kcl-validation---complete-index">KCL Validation - Complete Index</a></h1>
<p><strong>Validation Date:</strong> 2025-10-03
<strong>Project:</strong> project-provisioning
<strong>Scope:</strong> All KCL files across workspace extensions, templates, and infrastructure configs</p>
<hr />
<h2 id="-quick-reference"><a class="header" href="#-quick-reference">📊 Quick Reference</a></h2>
<div class="table-wrapper"><table><thead><tr><th>Metric</th><th>Value</th></tr></thead><tbody>
<tr><td><strong>Total Files Validated</strong></td><td>81</td></tr>
<tr><td><strong>Current Success Rate</strong></td><td>28.4% (23/81)</td></tr>
<tr><td><strong>After Fixes (Projected)</strong></td><td>40.0% (26/65 valid KCL)</td></tr>
<tr><td><strong>Critical Issues</strong></td><td>2 (templates + imports)</td></tr>
<tr><td><strong>Priority 1 Fix</strong></td><td>Rename 15 template files</td></tr>
<tr><td><strong>Priority 2 Fix</strong></td><td>Fix 4 import paths</td></tr>
<tr><td><strong>Estimated Fix Time</strong></td><td>1.5 hours</td></tr>
</tbody></table>
</div>
<hr />
<h2 id="-generated-files"><a class="header" href="#-generated-files">📁 Generated Files</a></h2>
<h3 id="primary-reports"><a class="header" href="#primary-reports">Primary Reports</a></h3>
<ol>
<li>
<p><strong>KCL_VALIDATION_FINAL_REPORT.md</strong> (15KB)</p>
<ul>
<li>Comprehensive validation results</li>
<li>Detailed error analysis by category</li>
<li>Fix recommendations with code examples</li>
<li>Projected success rates after fixes</li>
<li><strong>Use this for:</strong> Complete technical details</li>
</ul>
</li>
<li>
<p><strong>VALIDATION_EXECUTIVE_SUMMARY.md</strong> (9.9KB)</p>
<ul>
<li>High-level summary for stakeholders</li>
<li>Quick stats and metrics</li>
<li>Immediate action plan</li>
<li>Success criteria</li>
<li><strong>Use this for:</strong> Quick overview and decision making</li>
</ul>
</li>
<li>
<p><strong>This File (VALIDATION_INDEX.md)</strong></p>
<ul>
<li>Navigation guide</li>
<li>Quick reference</li>
<li>File descriptions</li>
</ul>
</li>
</ol>
<h3 id="validation-scripts"><a class="header" href="#validation-scripts">Validation Scripts</a></h3>
<ol start="4">
<li>
<p><strong>validate_kcl_summary.nu</strong> (6.9KB) - <strong>RECOMMENDED</strong></p>
<ul>
<li>Clean, focused validation script</li>
<li>Category-based validation (workspace, templates, infra)</li>
<li>Success rate statistics</li>
<li>Error categorization</li>
<li>Generates <code>failures_detail.json</code></li>
<li><strong>Usage:</strong> <code>nu validate_kcl_summary.nu</code></li>
</ul>
</li>
<li>
<p><strong>validate_all_kcl.nu</strong> (11KB)</p>
<ul>
<li>Comprehensive validation with detailed tracking</li>
<li>Generates full JSON report</li>
<li>More verbose output</li>
<li><strong>Usage:</strong> <code>nu validate_all_kcl.nu</code></li>
</ul>
</li>
</ol>
<h3 id="fix-scripts"><a class="header" href="#fix-scripts">Fix Scripts</a></h3>
<ol start="6">
<li><strong>apply_kcl_fixes.nu</strong> (6.3KB) - <strong>ACTION SCRIPT</strong>
<ul>
<li>Automated fix application</li>
<li>Priority 1: Renames template files (.k → .nu.j2)</li>
<li>Priority 2: Fixes import paths (taskservs.version → provisioning.version)</li>
<li>Dry-run mode available</li>
<li><strong>Usage:</strong> <code>nu apply_kcl_fixes.nu --dry-run</code> (preview)</li>
<li><strong>Usage:</strong> <code>nu apply_kcl_fixes.nu</code> (apply fixes)</li>
</ul>
</li>
</ol>
<h3 id="data-files"><a class="header" href="#data-files">Data Files</a></h3>
<ol start="7">
<li>
<p><strong>failures_detail.json</strong> (19KB)</p>
<ul>
<li>Detailed failure information</li>
<li>File paths, error messages, categories</li>
<li>Generated by <code>validate_kcl_summary.nu</code></li>
<li><strong>Use for:</strong> Debugging specific failures</li>
</ul>
</li>
<li>
<p><strong>kcl_validation_report.json</strong> (2.9MB)</p>
<ul>
<li>Complete validation data dump</li>
<li>Generated by <code>validate_all_kcl.nu</code></li>
<li>Very detailed, includes full error text</li>
<li><strong>Warning:</strong> Very large file</li>
</ul>
</li>
</ol>
<hr />
<h2 id="-quick-start-guide"><a class="header" href="#-quick-start-guide">🚀 Quick Start Guide</a></h2>
<h3 id="step-1-review-the-validation-results"><a class="header" href="#step-1-review-the-validation-results">Step 1: Review the Validation Results</a></h3>
<p><strong>For executives/decision makers:</strong></p>
<pre><code class="language-bash">cat VALIDATION_EXECUTIVE_SUMMARY.md
</code></pre>
<p><strong>For technical details:</strong></p>
<pre><code class="language-bash">cat KCL_VALIDATION_FINAL_REPORT.md
</code></pre>
<h3 id="step-2-preview-fixes-dry-run"><a class="header" href="#step-2-preview-fixes-dry-run">Step 2: Preview Fixes (Dry Run)</a></h3>
<pre><code class="language-bash">nu apply_kcl_fixes.nu --dry-run
</code></pre>
<p><strong>Expected output:</strong></p>
<pre><code>🔍 DRY RUN MODE - No changes will be made
📝 Priority 1: Renaming Template Files (.k → .nu.j2)
─────────────────────────────────────────────────────────────
[DRY RUN] Would rename: provisioning/workspace/templates/providers/aws/defaults.k
[DRY RUN] Would rename: provisioning/workspace/templates/providers/upcloud/defaults.k
...
</code></pre>
<h3 id="step-3-apply-fixes"><a class="header" href="#step-3-apply-fixes">Step 3: Apply Fixes</a></h3>
<pre><code class="language-bash">nu apply_kcl_fixes.nu
</code></pre>
<p><strong>Expected output:</strong></p>
<pre><code>✅ Priority 1: Renamed 15 template files
✅ Priority 2: Fixed 4 import paths
Next steps:
1. Re-run validation: nu validate_kcl_summary.nu
2. Verify template rendering still works
3. Test workspace extension loading
</code></pre>
<h3 id="step-4-re-validate"><a class="header" href="#step-4-re-validate">Step 4: Re-validate</a></h3>
<pre><code class="language-bash">nu validate_kcl_summary.nu
</code></pre>
<p><strong>Expected improved results:</strong></p>
<pre><code>╔═══════════════════════════════════════════════════╗
║ VALIDATION STATISTICS MATRIX ║
╚═══════════════════════════════════════════════════╝
┌─────────────────────────┬──────────┬────────┬────────────────┐
│ Category │ Total │ Pass │ Success Rate │
├─────────────────────────┼──────────┼────────┼────────────────┤
│ Workspace Extensions │ 15 │ 14 │ 93.3% ✅ │
│ Infra Configs │ 50 │ 12 │ 24.0% │
│ OVERALL (valid KCL) │ 65 │ 26 │ 40.0% ✅ │
└─────────────────────────┴──────────┴────────┴────────────────┘
</code></pre>
<hr />
<h2 id="-key-findings"><a class="header" href="#-key-findings">🎯 Key Findings</a></h2>
<h3 id="1-template-file-misclassification-critical"><a class="header" href="#1-template-file-misclassification-critical">1. Template File Misclassification (CRITICAL)</a></h3>
<p><strong>Issue:</strong> 15 template files stored as <code>.k</code> (KCL) contain Nushell syntax</p>
<p><strong>Files Affected:</strong></p>
<ul>
<li>All provider templates (aws, upcloud)</li>
<li>All library templates (override, compose)</li>
<li>All taskserv templates (databases, networking, storage, kubernetes, infrastructure)</li>
<li>All server templates (control-plane, storage-node)</li>
</ul>
<p><strong>Impact:</strong></p>
<ul>
<li>93.7% of templates failing validation</li>
<li>Cannot be used as KCL schemas</li>
<li>Confusion between Jinja2 templates and KCL</li>
</ul>
<p><strong>Fix:</strong>
Rename all from <code>.k</code> to <code>.nu.j2</code></p>
<p><strong>Status:</strong> ✅ Automated fix available in <code>apply_kcl_fixes.nu</code></p>
<h3 id="2-version-import-path-error-medium"><a class="header" href="#2-version-import-path-error-medium">2. Version Import Path Error (MEDIUM)</a></h3>
<p><strong>Issue:</strong> 4 workspace extensions import non-existent <code>taskservs.version</code></p>
<p><strong>Files Affected:</strong></p>
<ul>
<li><code>workspace-librecloud/.taskservs/development/gitea/kcl/version.k</code></li>
<li><code>workspace-librecloud/.taskservs/development/oras/kcl/version.k</code></li>
<li><code>workspace-librecloud/.taskservs/storage/oci_reg/kcl/version.k</code></li>
<li><code>workspace-librecloud/.taskservs/infrastructure/os/kcl/version.k</code></li>
</ul>
<p><strong>Impact:</strong></p>
<ul>
<li>Version checking fails for 33% of workspace extensions</li>
</ul>
<p><strong>Fix:</strong>
Change <code>import taskservs.version</code> to <code>import provisioning.version</code></p>
<p><strong>Status:</strong> ✅ Automated fix available in <code>apply_kcl_fixes.nu</code></p>
<h3 id="3-infrastructure-config-failures-expected"><a class="header" href="#3-infrastructure-config-failures-expected">3. Infrastructure Config Failures (EXPECTED)</a></h3>
<p><strong>Issue:</strong> 38 infrastructure configs fail validation</p>
<p><strong>Impact:</strong></p>
<ul>
<li>76% of infra configs failing</li>
</ul>
<p><strong>Root Cause:</strong>
Configs reference modules not loaded during standalone validation</p>
<p><strong>Fix:</strong>
No immediate fix needed - expected behavior</p>
<p><strong>Status:</strong> Documented as expected - requires full workspace context</p>
<hr />
<h2 id="-success-rate-projection"><a class="header" href="#-success-rate-projection">📈 Success Rate Projection</a></h2>
<h3 id="current-state"><a class="header" href="#current-state">Current State</a></h3>
<pre><code>Workspace Extensions: 66.7% (10/15)
Templates: 6.3% (1/16) ⚠️ CRITICAL
Infra Configs: 24.0% (12/50)
Overall: 28.4% (23/81)
</code></pre>
<h3 id="after-priority-1-template-renaming"><a class="header" href="#after-priority-1-template-renaming">After Priority 1 (Template Renaming)</a></h3>
<pre><code>Workspace Extensions: 66.7% (10/15)
Templates: N/A (excluded from KCL validation)
Infra Configs: 24.0% (12/50)
Overall (valid KCL): 33.8% (22/65)
</code></pre>
<h3 id="after-priority-1--2-templates--imports"><a class="header" href="#after-priority-1--2-templates--imports">After Priority 1 + 2 (Templates + Imports)</a></h3>
<pre><code>Workspace Extensions: 93.3% (14/15) ✅
Templates: N/A (excluded from KCL validation)
Infra Configs: 24.0% (12/50)
Overall (valid KCL): 40.0% (26/65) ✅
</code></pre>
<h3 id="theoretical-with-full-workspace-context"><a class="header" href="#theoretical-with-full-workspace-context">Theoretical (With Full Workspace Context)</a></h3>
<pre><code>Workspace Extensions: 93.3% (14/15)
Templates: N/A
Infra Configs: ~84% (~42/50)
Overall (valid KCL): ~86% (~56/65) 🎯
</code></pre>
<hr />
<h2 id="-validation-commands-reference"><a class="header" href="#-validation-commands-reference">🛠️ Validation Commands Reference</a></h2>
<h3 id="run-validation"><a class="header" href="#run-validation">Run Validation</a></h3>
<pre><code class="language-bash"># Quick summary (recommended)
nu validate_kcl_summary.nu
# Comprehensive validation
nu validate_all_kcl.nu
</code></pre>
<h3 id="apply-fixes"><a class="header" href="#apply-fixes">Apply Fixes</a></h3>
<pre><code class="language-bash"># Preview changes
nu apply_kcl_fixes.nu --dry-run
# Apply fixes
nu apply_kcl_fixes.nu
</code></pre>
<h3 id="manual-validation-single-file"><a class="header" href="#manual-validation-single-file">Manual Validation (Single File)</a></h3>
<pre><code class="language-bash">cd /path/to/directory
kcl run filename.k
</code></pre>
<h3 id="check-specific-categories"><a class="header" href="#check-specific-categories">Check Specific Categories</a></h3>
<pre><code class="language-bash"># Workspace extensions
cd workspace-librecloud/.taskservs/development/gitea/kcl
kcl run gitea.k
# Templates (will fail if contains Nushell syntax)
cd provisioning/workspace/templates/providers/aws
kcl run defaults.k
# Infrastructure configs
cd workspace-librecloud/infra/wuji/taskservs
kcl run kubernetes.k
</code></pre>
<hr />
<h2 id="-action-checklist"><a class="header" href="#-action-checklist">📋 Action Checklist</a></h2>
<h3 id="immediate-actions-this-week"><a class="header" href="#immediate-actions-this-week">Immediate Actions (This Week)</a></h3>
<ul>
<li>
<p><input disabled="" type="checkbox"/>
<strong>Review executive summary</strong> (5 min)</p>
<ul>
<li>Read <code>VALIDATION_EXECUTIVE_SUMMARY.md</code></li>
<li>Understand impact and priorities</li>
</ul>
</li>
<li>
<p><input disabled="" type="checkbox"/>
<strong>Preview fixes</strong> (5 min)</p>
<ul>
<li>Run <code>nu apply_kcl_fixes.nu --dry-run</code></li>
<li>Review changes to be made</li>
</ul>
</li>
<li>
<p><input disabled="" type="checkbox"/>
<strong>Apply Priority 1 fix</strong> (30 min)</p>
<ul>
<li>Run <code>nu apply_kcl_fixes.nu</code></li>
<li>Verify templates renamed to <code>.nu.j2</code></li>
<li>Test Jinja2 rendering still works</li>
</ul>
</li>
<li>
<p><input disabled="" type="checkbox"/>
<strong>Apply Priority 2 fix</strong> (15 min)</p>
<ul>
<li>Verify import paths fixed (done automatically)</li>
<li>Test workspace extension loading</li>
<li>Verify version checking works</li>
</ul>
</li>
<li>
<p><input disabled="" type="checkbox"/>
<strong>Re-validate</strong> (5 min)</p>
<ul>
<li>Run <code>nu validate_kcl_summary.nu</code></li>
<li>Confirm improved success rates</li>
<li>Document results</li>
</ul>
</li>
</ul>
<h3 id="follow-up-actions-next-sprint"><a class="header" href="#follow-up-actions-next-sprint">Follow-up Actions (Next Sprint)</a></h3>
<ul>
<li>
<p><input disabled="" type="checkbox"/>
<strong>Create validation CI/CD</strong> (4 hours)</p>
<ul>
<li>Add pre-commit hook for KCL validation</li>
<li>Create GitHub Actions workflow</li>
<li>Prevent future misclassifications</li>
</ul>
</li>
<li>
<p><input disabled="" type="checkbox"/>
<strong>Document standards</strong> (2 hours)</p>
<ul>
<li>File naming conventions</li>
<li>Import path guidelines</li>
<li>Validation success criteria</li>
</ul>
</li>
<li>
<p><input disabled="" type="checkbox"/>
<strong>Improve infra validation</strong> (8 hours)</p>
<ul>
<li>Create workspace context validator</li>
<li>Load all modules before validation</li>
<li>Target 80%+ success rate</li>
</ul>
</li>
</ul>
<hr />
<h2 id="-investigation-tools"><a class="header" href="#-investigation-tools">🔍 Investigation Tools</a></h2>
<h3 id="view-detailed-failures"><a class="header" href="#view-detailed-failures">View Detailed Failures</a></h3>
<pre><code class="language-bash"># All failures
cat failures_detail.json | jq
# Count by category
cat failures_detail.json | jq 'group_by(.category) | map({category: .[0].category, count: length})'
# Filter by error type
cat failures_detail.json | jq '.[] | select(.error | contains("TypeError"))'
</code></pre>
<h3 id="find-specific-files"><a class="header" href="#find-specific-files">Find Specific Files</a></h3>
<pre><code class="language-bash"># All KCL files
find . -name "*.k" -type f
# Templates only
find provisioning/workspace/templates -name "*.k" -type f
# Workspace extensions
find workspace-librecloud/.taskservs -name "*.k" -type f
</code></pre>
<h3 id="verify-fixes-applied"><a class="header" href="#verify-fixes-applied">Verify Fixes Applied</a></h3>
<pre><code class="language-bash"># Check templates renamed
ls -la provisioning/workspace/templates/**/*.nu.j2
# Check import paths fixed
grep "import provisioning.version" workspace-librecloud/.taskservs/**/version.k
</code></pre>
<hr />
<h2 id="-support--resources"><a class="header" href="#-support--resources">📞 Support &amp; Resources</a></h2>
<h3 id="key-directories"><a class="header" href="#key-directories">Key Directories</a></h3>
<ul>
<li><strong>Templates:</strong> <code>/Users/Akasha/project-provisioning/provisioning/workspace/templates/</code></li>
<li><strong>Workspace Extensions:</strong> <code>/Users/Akasha/project-provisioning/workspace-librecloud/.taskservs/</code></li>
<li><strong>Infrastructure Configs:</strong> <code>/Users/Akasha/project-provisioning/workspace-librecloud/infra/</code></li>
</ul>
<h3 id="key-schema-files"><a class="header" href="#key-schema-files">Key Schema Files</a></h3>
<ul>
<li><strong>Version Schema:</strong> <code>workspace-librecloud/.kcl/packages/provisioning/version.k</code></li>
<li><strong>Core Schemas:</strong> <code>provisioning/kcl/</code></li>
<li><strong>Workspace Packages:</strong> <code>workspace-librecloud/.kcl/packages/</code></li>
</ul>
<h3 id="related-documentation"><a class="header" href="#related-documentation">Related Documentation</a></h3>
<ul>
<li><strong>KCL Guidelines:</strong> <code>KCL_GUIDELINES_IMPLEMENTATION.md</code></li>
<li><strong>Module Organization:</strong> <code>KCL_MODULE_ORGANIZATION_SUMMARY.md</code></li>
<li><strong>Dependency Patterns:</strong> <code>KCL_DEPENDENCY_PATTERNS.md</code></li>
</ul>
<hr />
<h2 id="-notes"><a class="header" href="#-notes">📝 Notes</a></h2>
<h3 id="validation-methodology"><a class="header" href="#validation-methodology">Validation Methodology</a></h3>
<ul>
<li><strong>Tool:</strong> KCL CLI v0.11.2</li>
<li><strong>Command:</strong> <code>kcl run &lt;file&gt;.k</code></li>
<li><strong>Success:</strong> Exit code 0</li>
<li><strong>Failure:</strong> Non-zero exit code with error messages</li>
</ul>
<h3 id="known-limitations"><a class="header" href="#known-limitations">Known Limitations</a></h3>
<ul>
<li>Infrastructure configs require full workspace context for complete validation</li>
<li>Standalone validation may show false negatives for module imports</li>
<li>Template files should not be validated as KCL (intended as Jinja2)</li>
</ul>
<h3 id="version-information"><a class="header" href="#version-information">Version Information</a></h3>
<ul>
<li><strong>KCL:</strong> v0.11.2</li>
<li><strong>Nushell:</strong> v0.107.1</li>
<li><strong>Validation Scripts:</strong> v1.0.0</li>
<li><strong>Report Date:</strong> 2025-10-03</li>
</ul>
<hr />
<h2 id="-success-criteria"><a class="header" href="#-success-criteria">✅ Success Criteria</a></h2>
<h3 id="minimum-viable"><a class="header" href="#minimum-viable">Minimum Viable</a></h3>
<ul>
<li><input disabled="" type="checkbox" checked=""/>
Validation completed for all KCL files</li>
<li><input disabled="" type="checkbox" checked=""/>
Issues identified and categorized</li>
<li><input disabled="" type="checkbox" checked=""/>
Fix scripts created and tested</li>
<li><input disabled="" type="checkbox"/>
Workspace extensions &gt;90% success (currently 66.7%, will be 93.3% after fixes)</li>
<li><input disabled="" type="checkbox" checked=""/>
Templates correctly identified as Jinja2</li>
</ul>
<h3 id="target-state"><a class="header" href="#target-state">Target State</a></h3>
<ul>
<li><input disabled="" type="checkbox"/>
Workspace extensions &gt;95% success</li>
<li><input disabled="" type="checkbox"/>
Infra configs &gt;80% success (requires full context)</li>
<li><input disabled="" type="checkbox"/>
Zero misclassified file types</li>
<li><input disabled="" type="checkbox"/>
Automated validation in CI/CD</li>
</ul>
<h3 id="stretch-goal"><a class="header" href="#stretch-goal">Stretch Goal</a></h3>
<ul>
<li><input disabled="" type="checkbox"/>
100% workspace extension success</li>
<li><input disabled="" type="checkbox"/>
90% infra config success</li>
<li><input disabled="" type="checkbox"/>
Real-time validation in development workflow</li>
<li><input disabled="" type="checkbox"/>
Automatic fix suggestions</li>
</ul>
<hr />
<p><strong>Last Updated:</strong> 2025-10-03
<strong>Validation Completed By:</strong> Claude Code Agent
<strong>Next Review:</strong> After Priority 1+2 fixes applied</p>
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
<a rel="prev" href="../../development/kcl/KCL_MODULE_SYSTEM_IMPLEMENTATION.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next prefetch" href="../../development/kcl/VALIDATION_EXECUTIVE_SUMMARY.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
<div style="clear: both"></div>
</nav>
</div>
</div>
<nav class="nav-wide-wrapper" aria-label="Page navigation">
<a rel="prev" href="../../development/kcl/KCL_MODULE_SYSTEM_IMPLEMENTATION.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next prefetch" href="../../development/kcl/VALIDATION_EXECUTIVE_SUMMARY.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
</nav>
</div>
<!-- Livereload script (if served using the cli tool) -->
<script>
const wsProtocol = location.protocol === 'https:' ? 'wss:' : 'ws:';
const wsAddress = wsProtocol + "//" + location.host + "/" + "__livereload";
const socket = new WebSocket(wsAddress);
socket.onmessage = function (event) {
if (event.data === "reload") {
socket.close();
location.reload();
}
};
window.onbeforeunload = function() {
socket.close();
}
</script>
<script>
window.playground_copyable = true;
</script>
<script src="../../elasticlunr.min.js"></script>
<script src="../../mark.min.js"></script>
<script src="../../searcher.js"></script>
<script src="../../clipboard.min.js"></script>
<script src="../../highlight.js"></script>
<script src="../../book.js"></script>
<!-- Custom JS scripts -->
</div>
</body>
</html>