progit-plugin-sdk 0.2.1

Plugin SDK for ProGit — sandboxed LuaJIT runtime with capability-based security. LSL-1.0 (file-level copyleft, proprietary plugins allowed via the commercial bridge).
Documentation
# ProGit Plugin SDK - Setup Complete

## ✅ What Was Built

### Repository Structure
```
progit-plugin-sdk/
├── src/
│   ├── lib.rs              # Main entry, Apache 2.0 licensed
│   ├── traits.rs           # Plugin trait definitions
│   ├── lua/
│   │   └── mod.rs          # LuaJIT runtime (default)
│   └── wasm/
│       └── mod.rs          # WASM runtime (optional feature)
├── examples/
│   ├── lua_hello_world.rs  # Lua plugin example
│   └── jira_sync.lua       # Real-world Jira sync example
├── docs/
│   └── plugin_development.md  # Complete development guide
├── LICENSE                 # Apache 2.0
├── README.md               # Comprehensive documentation
├── CHANGELOG.md
├── CONTRIBUTING.md
└── Cargo.toml              # LuaJIT default, WASM optional
```

### Key Features

1. **Apache 2.0 License**
   - Corporations can write closed-source plugins
   - Explicit patent grant
   - No viral contamination of EUPL core

2. **LuaJIT Runtime (Default)**
   - Binary size: ~2MB
   - Instant startup
   - Sandboxed execution
   - JSON ↔ Lua conversion

3. **WASM Runtime (Optional)**
   - Feature flag: `--features=wasm`
   - Binary size: +8MB (opt-in only)
   - High performance
   - Strongly typed (Rust/Go/Zig)

4. **Plugin Hooks**
   - `on_issue_created`
   - `on_issue_updated`
   - `on_issue_deleted`
   - `on_status_changed`
   - `on_sync_push`
   - `on_sync_pull`
   - `on_merge_request_created`
   - Custom commands

5. **Complete Documentation**
   - README with quick start
   - Plugin development guide
   - Example plugins (hello-world, jira-sync)
   - API reference in code docs

## 🎯 Strategic Alignment

### The "5MB Binary" Thesis

| Component | Size | Cumulative |
|-----------|------|------------|
| ProGit TUI Core | ~3MB | 3MB |
| LuaJIT Runtime | ~2MB | 5MB |
| Plugin SDK | ~100KB | 5.1MB |
| **Total (default)** | | **~5MB**|

With WASM (opt-in):
| Component | Size | Cumulative |
|-----------|------|------------|
| Above | 5.1MB | 5.1MB |
| Wasmtime | ~8MB | 13.1MB |

### License Architecture

```
┌──────────────────────────────────────────────────────────────┐
│  ProGit TUI Core (Rust)                                      │
│  EUPL-1.2 Licensed                                           │
│  NO proprietary code linked                                  │
└───────────────────────────┬──────────────────────────────────┘
                   progit-plugin-sdk (Apache 2.0)
┌───────────────────────────┴──────────────────────────────────┐
│  Community Plugins (Lua/WASM)                                │
│  Apache-2.0 or MIT or Proprietary                            │
│  Loaded at RUNTIME via SDK                                   │
└──────────────────────────────────────────────────────────────┘
```

**No static linking. No license contagion. Clean separation.**

## 📋 Next Steps

### Immediate (This Week)
1. ✅ Plugin SDK repository created
2. ✅ LuaJIT runtime implemented
3. ✅ Example plugins created
4. ⏳ Run tests (in progress)
5. ⏳ Publish to crates.io
6. ⏳ Update ProGit core to use SDK

### Short Term (Next 2 Weeks)
1. Integrate SDK into ProGit TUI
2. Add plugin loading mechanism
3. Create plugin registry structure
4. Ship fuzzy command palette (addiction molecule #1)
5. Ship interactive rebase visualizer (addiction molecule #2)

### Medium Term (Month 2-3)
1. Build 5-10 example plugins
2. Document plugin API thoroughly
3. Create plugin template generator
4. Launch plugin ecosystem
5. HN post: "I replaced GitLab with a 5MB binary"

## 🔥 The Blade is Ready

**What we have:**
- ✅ Apache 2.0 SDK (corporate-friendly)
- ✅ LuaJIT runtime (small, fast)
- ✅ WASM optional (power users)
- ✅ Complete documentation
- ✅ Example plugins
- ✅ Clean license separation

**What's next:**
- Integration with ProGit core
- Plugin loading system
- Addiction molecules (fuzzy palette, rebase visualizer)
- Ecosystem launch

**The forge is weaponized. The blade is clean. Ready to cut.**

---

*Created: 2025-12-11 01:45*
*Status: READY FOR INTEGRATION*