Vapora/docs/setup/tracking-setup.html
Jesús Pérez 4cbbf3f864
Some checks failed
Rust CI / Security Audit (push) Has been cancelled
Rust CI / Check + Test + Lint (nightly) (push) Has been cancelled
Rust CI / Check + Test + Lint (stable) (push) Has been cancelled
chore: add setup md files
2026-01-12 03:17:04 +00:00

775 lines
31 KiB
HTML

<!DOCTYPE HTML>
<html lang="en" class="light sidebar-visible" dir="ltr">
<head>
<!-- Book generated using mdBook -->
<meta charset="UTF-8">
<title>Tracking Setup - VAPORA Platform Documentation</title>
<!-- Custom HTML head -->
<meta name="description" content="Comprehensive documentation for VAPORA, an intelligent development orchestration platform built entirely in 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 = "light";
const default_dark_theme = "dark";
</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('light')
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">VAPORA 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/vapora-platform/vapora" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i>
</a>
<a href="https://github.com/vapora-platform/vapora/edit/main/docs/src/../setup/tracking-setup.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>
<hr />
<h2>title: Vapora Tracking System - Complete Setup Guide
date: 2025-11-10
version: 1.0</h2>
<h1 id="-vapora-tracking-system---complete-setup-guide"><a class="header" href="#-vapora-tracking-system---complete-setup-guide">🛠️ Vapora Tracking System - Complete Setup Guide</a></h1>
<p><strong>This guide covers everything from zero to fully operational tracking system.</strong></p>
<hr />
<h2 id="-table-of-contents"><a class="header" href="#-table-of-contents">📋 Table of Contents</a></h2>
<ol>
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#installation">Installation</a></li>
<li><a href="#configuration">Configuration</a></li>
<li><a href="#verification">Verification</a></li>
<li><a href="#first-use">First Use</a></li>
<li><a href="#troubleshooting">Troubleshooting</a></li>
</ol>
<hr />
<h2 id="prerequisites"><a class="header" href="#prerequisites">Prerequisites</a></h2>
<h3 id="system-requirements"><a class="header" href="#system-requirements">System Requirements</a></h3>
<div class="table-wrapper"><table><thead><tr><th>Requirement</th><th>Minimum</th><th>Recommended</th></tr></thead><tbody>
<tr><td>OS</td><td>macOS 10.15+</td><td>macOS 12+</td></tr>
<tr><td>RAM</td><td>2GB</td><td>4GB+</td></tr>
<tr><td>Disk</td><td>1GB</td><td>2GB+</td></tr>
<tr><td>Internet</td><td>Required for install</td><td>Required</td></tr>
</tbody></table>
</div>
<h3 id="software-requirements"><a class="header" href="#software-requirements">Software Requirements</a></h3>
<pre><code class="language-bash"># Check if installed
rustc --version # Need 1.70+
cargo --version # Comes with Rust
git --version # Need 2.20+
</code></pre>
<h3 id="installation-check"><a class="header" href="#installation-check">Installation Check</a></h3>
<pre><code class="language-bash">#!/bin/bash
echo "Checking prerequisites..."
# Check Rust
if ! command -v rustc &amp;&gt; /dev/null; then
echo "❌ Rust not found. Install from https://rustup.rs"
exit 1
fi
# Check Cargo
if ! command -v cargo &amp;&gt; /dev/null; then
echo "❌ Cargo not found. Install Rust from https://rustup.rs"
exit 1
fi
# Check Rust version
RUST_VERSION=$(rustc --version | awk '{print $2}')
echo "✅ Rust $RUST_VERSION found"
echo "✅ All prerequisites met!"
</code></pre>
<hr />
<h2 id="installation"><a class="header" href="#installation">Installation</a></h2>
<h3 id="step-1-install-rust-if-needed"><a class="header" href="#step-1-install-rust-if-needed">Step 1: Install Rust (if needed)</a></h3>
<pre><code class="language-bash"># Download and install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Follow the prompts (default options are fine)
# Add Rust to PATH
source $HOME/.cargo/env
# Verify installation
rustc --version
cargo --version
</code></pre>
<p><strong>Expected output:</strong></p>
<pre><code>rustc 1.XX.X (XXXXXXXXXXXX YYYY-MM-DD)
cargo 1.XX.X (XXXXXXXXXXXX YYYY-MM-DD)
</code></pre>
<h3 id="step-2-clone-or-navigate-to-vapora"><a class="header" href="#step-2-clone-or-navigate-to-vapora">Step 2: Clone or Navigate to Vapora</a></h3>
<pre><code class="language-bash"># Option A: Clone (if you don't have it)
git clone https://github.com/yourusername/vapora.git
cd vapora
# Option B: Navigate (if you already have it)
cd vapora
# Verify structure
ls crates/vapora-tracking/
# Should show: Cargo.toml, README.md, src/, benches/
</code></pre>
<h3 id="step-3-build-the-tracking-system"><a class="header" href="#step-3-build-the-tracking-system">Step 3: Build the Tracking System</a></h3>
<pre><code class="language-bash"># Build tracking crate
cargo build -p vapora-tracking
# Output should show:
# Compiling vapora-tracking v0.1.0
# Finished `dev` profile [unoptimized + debuginfo]
# For faster runtime (slower build):
cargo build -p vapora-tracking --release
# Output should show:
# Finished `release` profile [optimized]
</code></pre>
<p><strong>Build time:</strong></p>
<ul>
<li>Debug: 30-60 seconds (first time)</li>
<li>Release: 2-5 minutes (first time)</li>
<li>Subsequent: 1-10 seconds (incremental)</li>
</ul>
<h3 id="step-4-verify-build"><a class="header" href="#step-4-verify-build">Step 4: Verify Build</a></h3>
<pre><code class="language-bash"># List build artifacts
ls -lh target/debug/deps/ | grep vapora_tracking
# Should show several .rlib and other files
# Or with release build
ls -lh target/release/deps/ | grep vapora_tracking
</code></pre>
<h3 id="step-5-install-cli-components"><a class="header" href="#step-5-install-cli-components">Step 5: Install CLI Components</a></h3>
<pre><code class="language-bash"># Create commands directory if it doesn't exist
mkdir -p ~/.claude/commands
mkdir -p ~/.claude/skills
# Copy tracking commands
cp ~/.claude/commands/log-change.md ~/.claude/commands/
cp ~/.claude/commands/add-todo.md ~/.claude/commands/
cp ~/.claude/commands/track-status.md ~/.claude/commands/
# Copy tracking skill
cp ~/.claude/skills/tracking.md ~/.claude/skills/
# Verify installation
ls -la ~/.claude/commands/ | grep -E "log-change|add-todo|track-status"
ls -la ~/.claude/skills/ | grep tracking
</code></pre>
<hr />
<h2 id="configuration"><a class="header" href="#configuration">Configuration</a></h2>
<h3 id="option-1-default-configuration-recommended"><a class="header" href="#option-1-default-configuration-recommended">Option 1: Default Configuration (Recommended)</a></h3>
<p>The system works out of the box with defaults:</p>
<pre><code class="language-bash"># Default database location
~/.tracking/database.sqlite
# Default watch directories
~/.coder/
~/.claude/todos/
# Default API port
3000
</code></pre>
<p><strong>No configuration needed! Skip to Verification.</strong></p>
<h3 id="option-2-custom-configuration"><a class="header" href="#option-2-custom-configuration">Option 2: Custom Configuration</a></h3>
<p>Create <code>~/.config/vapora-tracking.toml</code>:</p>
<pre><code class="language-toml">[database]
# SQLite database path (use your home directory)
url = "sqlite://~/.tracking/database.sqlite"
# Max connections to database
max_connections = 5
# Connection timeout (seconds)
timeout = 5
[watcher]
# Directories to watch for changes (customize for your setup)
watch_dirs = [
"~/.coder",
"~/.claude/todos"
]
# Debounce time (milliseconds)
debounce_ms = 500
[api]
# API server port
port = 3000
# API host
host = "127.0.0.1"
[logging]
# Log level: trace, debug, info, warn, error
level = "info"
# Log file path
file = "/tmp/vapora-tracking.log"
</code></pre>
<h3 id="option-3-environment-variables"><a class="header" href="#option-3-environment-variables">Option 3: Environment Variables</a></h3>
<pre><code class="language-bash"># Set database location (use your home directory)
export TRACKING_DATABASE_URL="sqlite://~/.tracking/database.sqlite"
# Set API port
export TRACKING_API_PORT=3000
# Set log level
export RUST_LOG=info
# These override config file values
</code></pre>
<hr />
<h2 id="verification"><a class="header" href="#verification">Verification</a></h2>
<h3 id="test-1-build-success"><a class="header" href="#test-1-build-success">Test 1: Build Success</a></h3>
<pre><code class="language-bash"># Clean rebuild to verify
cargo clean -p vapora-tracking
cargo build -p vapora-tracking
# Check for success
if [ $? -eq 0 ]; then
echo "✅ Build successful"
else
echo "❌ Build failed"
exit 1
fi
</code></pre>
<h3 id="test-2-tests-pass"><a class="header" href="#test-2-tests-pass">Test 2: Tests Pass</a></h3>
<pre><code class="language-bash"># Run all unit tests
cargo test -p vapora-tracking --lib
# Expected output:
# running 20 tests
# ...
# test result: ok. 20 passed; 0 failed
</code></pre>
<p><strong>If not 20 tests:</strong></p>
<pre><code class="language-bash"># Check what tests exist
cargo test -p vapora-tracking --lib -- --list
# Run with output for debugging
cargo test -p vapora-tracking --lib -- --nocapture
</code></pre>
<h3 id="test-3-code-quality"><a class="header" href="#test-3-code-quality">Test 3: Code Quality</a></h3>
<pre><code class="language-bash"># Run clippy checks
cargo clippy -p vapora-tracking --lib -- -W clippy::all
# Should show minimal warnings (profile warning is expected)
</code></pre>
<h3 id="test-4-cli-commands"><a class="header" href="#test-4-cli-commands">Test 4: CLI Commands</a></h3>
<pre><code class="language-bash"># Verify commands are installed
ls ~/.claude/commands/
# Output should include:
# add-todo.md
# log-change.md
# track-status.md
# Verify skill
ls ~/.claude/skills/tracking.md
</code></pre>
<h3 id="test-5-api-health"><a class="header" href="#test-5-api-health">Test 5: API Health</a></h3>
<pre><code class="language-bash"># Start service
./scripts/start-tracking-service.nu
# Wait 2 seconds
sleep 2
# Check health endpoint
curl http://localhost:3000/api/v1/tracking/health
# Expected output:
# {"status":"ok","service":"vapora-tracking","timestamp":"2025-11-10T..."}
</code></pre>
<h3 id="verification-checklist"><a class="header" href="#verification-checklist">Verification Checklist</a></h3>
<pre><code class="language-bash"># Run all verifications
echo "Running verification tests..."
# Test 1: Build
cargo build -p vapora-tracking 2&gt;&amp;1 | grep -q "Finished"
[ $? -eq 0 ] &amp;&amp; echo "✅ Build" || echo "❌ Build"
# Test 2: Tests
cargo test -p vapora-tracking --lib 2&gt;&amp;1 | grep -q "20 passed"
[ $? -eq 0 ] &amp;&amp; echo "✅ Tests" || echo "❌ Tests"
# Test 3: Clippy
cargo clippy -p vapora-tracking --lib 2&gt;&amp;1 | grep -q "error:" &amp;&amp; echo "❌ Clippy" || echo "✅ Clippy"
# Test 4: Commands
[ -f ~/.claude/commands/log-change.md ] &amp;&amp; echo "✅ Commands" || echo "❌ Commands"
# Test 5: Skills
[ -f ~/.claude/skills/tracking.md ] &amp;&amp; echo "✅ Skills" || echo "❌ Skills"
echo "Verification complete!"
</code></pre>
<hr />
<h2 id="first-use"><a class="header" href="#first-use">First Use</a></h2>
<h3 id="your-first-change-log"><a class="header" href="#your-first-change-log">Your First Change Log</a></h3>
<pre><code class="language-bash"># Log your first change
/log-change "Set up Vapora tracking system" \
--impact infrastructure \
--files 1
# Expected response: Change logged successfully
</code></pre>
<h3 id="your-first-todo"><a class="header" href="#your-first-todo">Your First TODO</a></h3>
<pre><code class="language-bash"># Create your first TODO
/add-todo "Review tracking system documentation" \
--priority M \
--estimate S \
--due 2025-11-12
# Expected response: TODO created successfully
</code></pre>
<h3 id="your-first-status-check"><a class="header" href="#your-first-status-check">Your First Status Check</a></h3>
<pre><code class="language-bash"># Check current status
/track-status --limit 5
# Expected output shows your 1 change and 1 TODO
</code></pre>
<h3 id="your-first-export"><a class="header" href="#your-first-export">Your First Export</a></h3>
<pre><code class="language-bash"># Export to JSON
./scripts/export-tracking.nu json --output tracking-report
# Export to Markdown
./scripts/export-tracking.nu markdown --project vapora &gt; report.md
# Check results
ls -la tracking-report.json
cat report.md
</code></pre>
<hr />
<h2 id="troubleshooting"><a class="header" href="#troubleshooting">Troubleshooting</a></h2>
<h3 id="build-issues"><a class="header" href="#build-issues">Build Issues</a></h3>
<h4 id="issue-errore0433-failed-to-resolve"><a class="header" href="#issue-errore0433-failed-to-resolve">Issue: "error[E0433]: failed to resolve"</a></h4>
<p><strong>Solution:</strong></p>
<pre><code class="language-bash"># Update Rust
rustup update
# Clean and rebuild
cargo clean -p vapora-tracking
cargo build -p vapora-tracking
</code></pre>
<h4 id="issue-could-not-compile--due-to-x-previous-errors"><a class="header" href="#issue-could-not-compile--due-to-x-previous-errors">Issue: "could not compile ... due to X previous errors"</a></h4>
<p><strong>Solution:</strong></p>
<pre><code class="language-bash"># Check Rust version
rustc --version # Must be 1.70+
# Update if needed
rustup install stable
# Verify dependencies
cargo tree -p vapora-tracking
</code></pre>
<h3 id="database-issues"><a class="header" href="#database-issues">Database Issues</a></h3>
<h4 id="issue-database-file-not-found"><a class="header" href="#issue-database-file-not-found">Issue: "Database file not found"</a></h4>
<p><strong>Solution:</strong></p>
<pre><code class="language-bash"># Create database directory
mkdir -p ~/.tracking
# Start service to initialize
./scripts/start-tracking-service.nu
# Check database was created
ls -la ~/.tracking/
</code></pre>
<h4 id="issue-failed-to-initialize-database"><a class="header" href="#issue-failed-to-initialize-database">Issue: "Failed to initialize database"</a></h4>
<p><strong>Solution:</strong></p>
<pre><code class="language-bash"># Reset database
rm ~/.tracking/database.sqlite
# Service will recreate on next start
./scripts/start-tracking-service.nu
</code></pre>
<h3 id="cli-issues"><a class="header" href="#cli-issues">CLI Issues</a></h3>
<h4 id="issue-log-change-not-found-in-claude-code"><a class="header" href="#issue-log-change-not-found-in-claude-code">Issue: "/log-change not found" in Claude Code</a></h4>
<p><strong>Solution:</strong></p>
<pre><code class="language-bash"># Verify commands are copied
ls ~/.claude/commands/log-change.md
# If missing, copy them
cp ~/.claude/commands/log-change.md ~/.claude/commands/
# Restart Claude Code
</code></pre>
<h4 id="issue-command-not-recognized"><a class="header" href="#issue-command-not-recognized">Issue: "Command not recognized"</a></h4>
<p><strong>Solution:</strong></p>
<pre><code class="language-bash"># Check command format
/log-change --help
# Should show usage information
# If not, commands aren't properly installed
</code></pre>
<h3 id="api-issues"><a class="header" href="#api-issues">API Issues</a></h3>
<h4 id="issue-connection-refused-when-calling-api"><a class="header" href="#issue-connection-refused-when-calling-api">Issue: "Connection refused" when calling API</a></h4>
<p><strong>Solution:</strong></p>
<pre><code class="language-bash"># Start the service
./scripts/start-tracking-service.nu --verbose
# Wait for startup
sleep 2
# Check health
curl -v http://localhost:3000/api/v1/tracking/health
# Check logs
tail -f /tmp/vapora-tracking.log
</code></pre>
<h4 id="issue-port-3000-already-in-use"><a class="header" href="#issue-port-3000-already-in-use">Issue: "Port 3000 already in use"</a></h4>
<p><strong>Solution:</strong></p>
<pre><code class="language-bash"># Use different port
./scripts/start-tracking-service.nu --port 3001
# Or kill existing service
lsof -i :3000
kill -9 &lt;PID&gt;
</code></pre>
<h3 id="performance-issues"><a class="header" href="#performance-issues">Performance Issues</a></h3>
<h4 id="issue-build-is-very-slow"><a class="header" href="#issue-build-is-very-slow">Issue: Build is very slow</a></h4>
<p><strong>Solution:</strong></p>
<pre><code class="language-bash"># Use incremental compilation
export CARGO_INCREMENTAL=1
# Use faster linker (if available)
export RUSTFLAGS="-C link-arg=-fuse-ld=lld"
# Or just use release build once
cargo build -p vapora-tracking --release
</code></pre>
<h4 id="issue-high-memory-usage"><a class="header" href="#issue-high-memory-usage">Issue: High memory usage</a></h4>
<p><strong>Solution:</strong></p>
<pre><code class="language-bash"># Limit parallel jobs during build
cargo build -p vapora-tracking -j 2
# Or reduce connection pool
# Edit storage.rs: max_connections = 2
</code></pre>
<hr />
<h2 id="quick-troubleshooting-reference"><a class="header" href="#quick-troubleshooting-reference">Quick Troubleshooting Reference</a></h2>
<div class="table-wrapper"><table><thead><tr><th>Problem</th><th>Quick Fix</th></tr></thead><tbody>
<tr><td>Build fails</td><td><code>cargo clean &amp;&amp; cargo build</code></td></tr>
<tr><td>Tests fail</td><td><code>rustup update</code> then rebuild</td></tr>
<tr><td>Commands missing</td><td><code>cp ~/.claude/commands/*</code></td></tr>
<tr><td>API won't start</td><td><code>./scripts/start-tracking-service.nu --verbose</code></td></tr>
<tr><td>Database errors</td><td><code>rm ~/.tracking/database.sqlite</code></td></tr>
<tr><td>Port in use</td><td><code>./scripts/start-tracking-service.nu --port 3001</code></td></tr>
<tr><td>Slow build</td><td><code>export CARGO_INCREMENTAL=1</code></td></tr>
</tbody></table>
</div>
<hr />
<h2 id="system-validation-script"><a class="header" href="#system-validation-script">System Validation Script</a></h2>
<p>Save this as <code>validate-tracking.sh</code>:</p>
<pre><code class="language-bash">#!/bin/bash
set -e
echo "🔍 Validating Vapora Tracking System Installation"
echo "=================================================="
# Check Rust
echo "Checking Rust..."
if ! command -v rustc &amp;&gt; /dev/null; then
echo "❌ Rust not found"
exit 1
fi
echo "✅ Rust $(rustc --version | awk '{print $2}')"
# Check build
echo "Building tracking crate..."
cargo build -p vapora-tracking 2&gt;&amp;1 | tail -3
echo "✅ Build successful"
# Check tests
echo "Running tests..."
TEST_OUTPUT=$(cargo test -p vapora-tracking --lib 2&gt;&amp;1)
if echo "$TEST_OUTPUT" | grep -q "test result: ok. 20 passed"; then
echo "✅ All 20 tests passed"
else
echo "❌ Tests failed"
exit 1
fi
# Check CLI
echo "Checking CLI components..."
[ -f ~/.claude/commands/log-change.md ] &amp;&amp; echo "✅ Commands installed" || echo "⚠️ Commands not found"
[ -f ~/.claude/skills/tracking.md ] &amp;&amp; echo "✅ Skill installed" || echo "⚠️ Skill not found"
# Check scripts
echo "Checking scripts..."
[ -f ./scripts/start-tracking-service.nu ] &amp;&amp; echo "✅ Scripts available" || echo "⚠️ Scripts not found"
echo ""
echo "=================================================="
echo "✅ Validation Complete - System Ready!"
echo "=================================================="
echo ""
echo "Next steps:"
echo "1. /log-change \"Your first change\""
echo "2. /add-todo \"Your first task\""
echo "3. /track-status"
</code></pre>
<p>Run it:</p>
<pre><code class="language-bash">chmod +x validate-tracking.sh
./validate-tracking.sh
</code></pre>
<hr />
<h2 id="whats-next-after-setup"><a class="header" href="#whats-next-after-setup">What's Next After Setup?</a></h2>
<h3 id="immediate-today"><a class="header" href="#immediate-today">Immediate (Today)</a></h3>
<ul>
<li><input disabled="" type="checkbox"/>
Complete all verification tests</li>
<li><input disabled="" type="checkbox"/>
Create your first change log</li>
<li><input disabled="" type="checkbox"/>
Create your first TODO</li>
<li><input disabled="" type="checkbox"/>
Run your first status check</li>
</ul>
<h3 id="short-term-this-week"><a class="header" href="#short-term-this-week">Short Term (This Week)</a></h3>
<ul>
<li><input disabled="" type="checkbox"/>
Use <code>/log-change</code> for actual changes</li>
<li><input disabled="" type="checkbox"/>
Use <code>/add-todo</code> for tasks</li>
<li><input disabled="" type="checkbox"/>
Explore <code>/track-status</code> filters</li>
<li><input disabled="" type="checkbox"/>
Try exporting to different formats</li>
</ul>
<h3 id="medium-term-this-month"><a class="header" href="#medium-term-this-month">Medium Term (This Month)</a></h3>
<ul>
<li><input disabled="" type="checkbox"/>
Set up automated syncing</li>
<li><input disabled="" type="checkbox"/>
Create custom dashboard queries</li>
<li><input disabled="" type="checkbox"/>
Integrate with your workflows</li>
<li><input disabled="" type="checkbox"/>
Set up reports</li>
</ul>
<hr />
<h2 id="getting-help"><a class="header" href="#getting-help">Getting Help</a></h2>
<p><strong>Issue not listed above?</strong></p>
<ol>
<li>Check the <a href="../crates/vapora-tracking/INTEGRATION.html#troubleshooting">TROUBLESHOOTING section</a> in INTEGRATION.md</li>
<li>Review <a href="./TRACKING_SYSTEM_STATUS.html">TRACKING_SYSTEM_STATUS.md</a></li>
<li>Check logs: <code>tail -f /tmp/vapora-tracking.log</code></li>
<li>Read inline code documentation: <code>cargo doc -p vapora-tracking --open</code></li>
</ol>
<hr />
<h2 id="summary"><a class="header" href="#summary">Summary</a></h2>
<p>You've successfully set up the Vapora tracking system!</p>
<h3 id="what-you-now-have"><a class="header" href="#what-you-now-have">What you now have:</a></h3>
<p><strong>Built:</strong> vapora-tracking crate compiled and tested
<strong>Verified:</strong> All 20 tests passing
<strong>Installed:</strong> CLI commands and skill
<strong>Running:</strong> Tracking service ready
<strong>Configured:</strong> Database and API ready</p>
<h3 id="start-using-it"><a class="header" href="#start-using-it">Start using it:</a></h3>
<pre><code class="language-bash">/log-change "Example change" --impact backend
/add-todo "Example task" --priority H
/track-status
</code></pre>
<p><strong>Happy tracking! 🚀</strong></p>
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
<a rel="prev" href="../../setup/deployment-quickstart.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="../../setup/tracking-quickstart.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="../../setup/deployment-quickstart.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="../../setup/tracking-quickstart.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>
<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>