The Core Connection
Work-Wiki’s purpose is not measuring what AI did, but building an environment where the Human-AI feedback loop can operate. Three elements are required:- TRANSPARENCY: AI work is visible to human
- VISUALIZATION: Presented in a form human can understand
- FEEDBACK: Human can efficiently respond/correct/direct AI via prompt
Attribution Data Flow
WHO Changed What
Copy
╔═══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ ATTRIBUTION DATA EXTRACTION ║
║ ║
╠═══════════════════════════════════════════════════════════════════════════════╣
║ ║
║ SOURCE: Git commits with author information ║
║ ║
║ AI commits typically include: ║
║ - Author: Human name (from git config) ║
║ - Co-Authored-By: Claude <[email protected]> ║
║ ║
║ Git backend extracts this via: ║
║ ║
║ 1. Commit Detail ║
║ - Author and email from commit ║
║ - Full message containing Co-Authored-By ║
║ - Files changed with additions/deletions ║
║ ║
║ 2. Blame Tracking ║
║ - Line number ║
║ - Author who wrote THIS line ║
║ - Commit hash that introduced it ║
║ - Timestamp when it was written ║
║ - Actual line content ║
║ ║
║ 3. Author Timeline ║
║ - Total commits per author ║
║ - Total additions/deletions ║
║ - Time-ordered commit list ║
║ - Most modified files ║
║ ║
║ 4. Project Summary ║
║ - Top contributors ║
║ - Author count ║
║ - Contribution rankings ║
║ ║
╚═══════════════════════════════════════════════════════════════════════════════╝
WHAT Changed
Copy
╔═══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ CHANGE VISUALIZATION DATA ║
║ ║
╠═══════════════════════════════════════════════════════════════════════════════╣
║ ║
║ 1. Parsed Diff - Line-level changes ║
║ ║
║ ParsedDiff { ║
║ path: String, ║
║ lines: Vec<ParsedDiffLine>, ║
║ additions: usize, ║
║ deletions: usize ║
║ } ║
║ ║
║ ParsedDiffLine { ║
║ line_type: String, // "header", "hunk", "addition", ║
║ // "deletion", "context", "meta" ║
║ content: String, ║
║ old_line: Option<u32>, ║
║ new_line: Option<u32> ║
║ } ║
║ ║
║ Frontend can directly render: ║
║ ┌─────────────────────────────────────────────────────────────────────────┐ ║
║ │ Old │ New │ Content │ Type │ ║
║ ├──────┼──────┼─────────────────────────────────────────────┼─────────────┤ ║
║ │ │ │ @@ -10,5 +10,7 @@ │ hunk │ ║
║ │ 10 │ 10 │ function calculate() { │ context │ ║
║ │ 11 │ │ - return a + b; │ deletion │ ║
║ │ │ 11 │ + // AI: Adding validation │ addition │ ║
║ │ │ 12 │ + if (a === undefined) return 0; │ addition │ ║
║ │ │ 13 │ + return a + b; │ addition │ ║
║ │ 12 │ 14 │ } │ context │ ║
║ └─────────────────────────────────────────────────────────────────────────┘ ║
║ ║
║ 2. Commit Detail - Commit-level changes ║
║ ║
║ CommitFile { ║
║ path: String, ║
║ status: String, // "M", "A", "D", "R" ║
║ additions: usize, ║
║ deletions: usize ║
║ } ║
║ ║
║ 3. Branch Relationships - Merge topology ║
║ ║
║ BranchRelationship { ║
║ nodes: Vec<BranchNode>, ║
║ merge_events: Vec<MergeEventInfo> ║
║ } ║
║ ║
╚═══════════════════════════════════════════════════════════════════════════════╝
WHEN and HOW
Timeline data shows work progression:Copy
╔═══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ TIMELINE DATA EXTRACTION ║
║ ║
╠═══════════════════════════════════════════════════════════════════════════════╣
║ ║
║ 1. Commit Graph - Visual commit timeline ║
║ ║
║ CommitGraph { ║
║ nodes: Vec<CommitGraphNode>, ║
║ branches: Vec<BranchInfo>, ║
║ total_commits: usize, ║
║ max_columns: usize ║
║ } ║
║ ║
║ CommitGraphNode { ║
║ hash: String, ║
║ short_hash: String, ║
║ message: String, ║
║ author: String, ║
║ timestamp: i64, ║
║ relative_time: String, // "5m ago", "2h ago", etc. ║
║ column: usize, // Visual column for rendering ║
║ parents: Vec<String>, ║
║ children: Vec<String>, ║
║ is_merge: bool, ║
║ is_branch_tip: bool, ║
║ connections: Vec<GraphConnection> ║
║ } ║
║ ║
║ 2. Timeline Board - Time-bucketed view ║
║ ║
║ TimelineData { ║
║ commits: Vec<TimelineCommit>, ║
║ time_range: TimeRange ║
║ } ║
║ ║
║ 3. Branch Timeline - Branch-specific timeline ║
║ ║
║ BranchTimelineCommits { ║
║ branch: String, ║
║ buckets: Vec<CommitBucket> ║
║ } ║
║ ║
║ CommitBucket { ║
║ date: String, // "2025-01-17" ║
║ commits: Vec<...>, ║
║ count: usize ║
║ } ║
║ ║
╚═══════════════════════════════════════════════════════════════════════════════╝
AI Contribution Detection
The backend provides data for detecting AI contributions through multiple patterns:Pattern 1: Co-Authored-By Marker
Copy
commit abc123...
Author: John Doe <[email protected]>
Add new validation feature
- Added input validation
- Added error handling
Co-Authored-By: Claude <[email protected]> <-- AI marker
Pattern 2: Author Email Detection
Some setups may have AI as direct author:- [email protected] (Claude)
- [email protected] (GPT)
- github-actions[bot]@users.noreply.github.com
Pattern 3: Commit Message Analysis
AI commits often contain specific patterns:- “Generated with [Claude Code]”
- “Created by GitHub Copilot”
- Tool-specific markers
Data Refresh Strategy
Initial Page Load
Use batch refresh for fast loading:Copy
┌───────────────────────────────────────────────────────────────────────┐
│ BATCH REFRESH: SINGLE IPC CALL │
├───────────────────────────────────────────────────────────────────────┤
│ │
│ git_full_refresh({ path, commit_limit: 100 }) │
│ │
│ │ │
│ └──► Returns ALL initial data: │
│ ├── status (current branch, staged/unstaged files) │
│ ├── branches (all local and remote) │
│ ├── commits (last N commits) │
│ ├── worktrees (all worktrees) │
│ └── stashes (all stashes) │
│ │
│ Benefit: One round-trip for initial load │
│ │
└───────────────────────────────────────────────────────────────────────┘
File Selection
On-demand loading when user selects a file:Copy
┌───────────────────────────────────────────────────────────────────────┐
│ ON-DEMAND FILE LOADING │
├───────────────────────────────────────────────────────────────────────┤
│ │
│ User selects file │
│ │ │
│ ├──► git_blame({ path, file_path }) │
│ │ └──► Line-by-line authorship │
│ │ │
│ ├──► git_diff_parsed({ path, file_path, staged: false }) │
│ │ └──► Parsed diff with line types │
│ │ │
│ └──► git_file_timeline({ path, file_path }) │
│ └──► Commit history for this file │
│ │
│ Each call loads only when needed (lazy loading) │
│ │
└───────────────────────────────────────────────────────────────────────┘
History Exploration
Incremental loading for commit history:Copy
┌───────────────────────────────────────────────────────────────────────┐
│ INCREMENTAL HISTORY LOADING │
├───────────────────────────────────────────────────────────────────────┤
│ │
│ STEP 1: Load graph structure │
│ ───────────────────────────── │
│ git_commit_graph({ path, limit: 500 }) │
│ └──► Commit nodes with connections │
│ (lightweight, no diffs) │
│ │
│ STEP 2: User clicks commit │
│ ─────────────────────────────── │
│ git_commit_detail({ path, commit_id }) │
│ └──► Full commit data: │
│ ├── Message │
│ ├── Author, date │
│ ├── Files changed │
│ └── Additions/deletions │
│ │
│ Pattern: Overview first, details on demand │
│ │
└───────────────────────────────────────────────────────────────────────┘
The Complete Feedback Loop
Copy
╔═══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ THE COMPLETE FEEDBACK LOOP WITH GIT BACKEND ║
║ ║
╠═══════════════════════════════════════════════════════════════════════════════╣
║ ║
║ ┌───────────────────────────────────────────────────────────┐ ║
║ │ │ ║
║ │ AI Work │ ║
║ │ │ │ ║
║ │ │ Creates commits with Co-Authored-By │ ║
║ │ v │ ║
║ │ ╔═══════════════════════╗ │ ║
║ │ ║ Git Repository ║ │ ║
║ │ ╚═══════════╦═══════════╝ │ ║
║ │ │ │ ║
║ │ │ Git backend extracts │ ║
║ │ v │ ║
║ │ ┌───────────────────────┐ │ ║
║ │ │ TRANSPARENCY │ │ ║
║ │ ├───────────────────────┤ │ ║
║ │ │ - Who: blame, │ │ ║
║ │ │ author_timeline │ │ ║
║ │ │ - What: diffs, │ │ ║
║ │ │ commit_detail │ │ ║
║ │ │ - When: log, │ │ ║
║ │ │ timeline_board │ │ ║
║ │ └───────────┬───────────┘ │ ║
║ │ │ │ ║
║ │ │ Tauri IPC │ ║
║ │ v │ ║
║ │ ┌───────────────────────┐ │ ║
║ │ │ VISUALIZATION │ │ ║
║ │ │ Work-Wiki │ │ ║
║ │ │ Frontend │ │ ║
║ │ └───────────┬───────────┘ │ ║
║ │ │ │ ║
║ │ │ Human sees AI work │ ║
║ │ v │ ║
║ │ ┌───────────────────────┐ │ ║
║ │ │ Human Understands │ │ ║
║ │ ├───────────────────────┤ │ ║
║ │ │ - What changed │ │ ║
║ │ │ - Who changed it │ │ ║
║ │ │ - Why/How │ │ ║
║ │ └───────────┬───────────┘ │ ║
║ │ │ │ ║
║ │ │ FEEDBACK via prompt │ ║
║ │ v │ ║
║ │ ┌───────────────────────┐ │ ║
║ │ │ Human Responds │ │ ║
║ │ ├───────────────────────┤ │ ║
║ │ │ - Corrections │ │ ║
║ │ │ - Directions │ │ ║
║ │ │ - Approvals │ │ ║
║ │ └───────────┬───────────┘ │ ║
║ │ │ │ ║
║ │ │ Prompt to AI │ ║
║ │ │ │ ║
║ └─────────────┴─────────────────────────────────────────────┘ ║
║ │ ║
║ v ║
║ AI Work ║
║ (loop continues) ║
║ ║
║ This loop as ONE MOTION = Monokinetics ║
║ ║
╚═══════════════════════════════════════════════════════════════════════════════╝
THE CENTER
The Git backend is essential to THE CENTER. Without it:
- No transparency (the loop is BLIND)
- No visualization (the loop is INCOMPREHENSIBLE)
- No efficient feedback (the loop is BROKEN)