| title | Product evolution |
|---|---|
| sidebarTitle | Evolution |
| description | How LUMI evolved from the Cline VS Code extension through DietCode substrate work to governed calm agency. |
This page is the canonical history of how this repository diverged from Cline and became LUMI. For a short summary and migration table, see Origins & acknowledgments in the root README.
| Upstream | github.com/cline/cline (VS Code extension agent) |
| Maintainer | CardSorting |
| Current product | LUMI — CardSorting.lumi / CardSorting.lumi-vscode |
| Legal | NOTICE · LICENSE |
| Release log | CHANGELOG.md (extension semver) · changelogv3.md (substrate-era detail) |
- Timeline at a glance
- Chronological milestones
- Design thesis evolution
- Architectural continuity
- Phase narratives
- Cline vs LUMI (feature matrix)
- Version numbers across eras
- Naming migration reference
- Migration playbook (Cline → LUMI)
- Legacy inventory & refactor status
- What is not ported from Cline
- Changelog map
- Further reading
flowchart LR
subgraph upstream ["Upstream"]
C[Cline VS Code extension<br/>plan/act · MCP · checkpoints]
end
subgraph fork ["CardSorting fork"]
S[Sovereign snapshot<br/>Joy-Zoning · Spider]
D[DietCode identity<br/>4.x packaging]
V[changelogv3 5.x<br/>TIA · providers]
B[BroccoliDB recentering<br/>v21–v23]
G[Governed swarms<br/>receipts v3 · merge gate]
L[LUMI product<br/>2.x · CardSorting IDs]
end
C -->|fork| S
S --> D
D --> V
V --> B
B --> G
G --> L
| Era | Product name | What changed | Where to read more |
|---|---|---|---|
| Upstream | Cline | Human-in-the-loop VS Code agent: diff-before-write, plan/act, MCP, terminal, browser, checkpoints | Cline docs |
| Sovereign fork | DietCode (early) | CardSorting fork: Joy-Zoning, Spider forensics, sovereign policy engine, completion gates | .wiki/ forensics · Joy-Zoning docs |
| Packaged DietCode | DietCode 4.x | First distributable VSIX under DietCode branding | git e2a36f6 (Apr 2026) |
| Substrate 5.x | DietCode 5.x | Provider hardening, Sovereign Integrity Substrate (TIA), Spider V204 | changelogv3.md |
| Substrate recentering | DietCode + BroccoliDB | Cognitive memory and graph truth moved into @noorm/broccolidb |
AGENT_STACK.md |
| Governed execution | DietCode → LUMI | use_subagents harness: locks, roadmap projection, merge gate, receipt schema v3 |
governed-subagent-execution.md |
| Current | LUMI 2.x | Calm companion UX, LUMI logo, lumi.* commands, repo CardSorting/LUMI |
CHANGELOG.md |
Versioning note: Three number lines coexist on purpose:
| Line | Example | Tracks |
|---|---|---|
| Extension semver | 2.1.0 in package.json |
Shipped VS Code extension (LUMI era) |
| DietCode packaging | 4.1.3 VSIX era |
Early CardSorting builds (Apr 2026) |
| changelogv3 | 5.10.x |
Substrate, Spider, provider deep history |
Dates are from this repository's git history (fork onward). Upstream Cline predates these commits.
| Date | Milestone | Significance |
|---|---|---|
| 2026-04-12 | b96a026 Initial Sovereign Snapshot [Phases 1–23] |
Earliest commit in this fork; Joy-Zoning / Spider substrate begins |
| 2026-04-12 | d4a46b4 Full Identity Migration: DietCode |
User-facing rebrand from Cline → DietCode across extension UI |
| 2026-04-13 | e2a36f6 DietCode 4.1.3 VSIX packaging |
First successful distributable build under CardSorting |
| 2026-04-21 | changelogv3 5.10.11 | Sovereign Integrity Substrate (V204), non-blocking TIA advisories |
| 2026-04-22 | changelogv3 5.10.15 | Moonshot Kimi K2.6, NousResearch provider hardening |
| 2026-06-13 | 35beeb9 LUMI manifest rebrand |
Package wiring, OpenRouter attribution → LUMI |
| 2026-06-15 | 515e9b9 BroccoliDB architectural recentering |
AgentContext lifecycle cut; substrate owns durable graph |
| 2026-06-16 | 7a88376 LUMI logo & asset purge |
Legacy DietCode cola-era assets removed; calm LUMI identity |
| 2026-06-19 | 0a4387d JoyRide execution cache |
Performance layer for governed tool path |
| 2026-06-22–24 | Governed execution hardening | Merge gate, lock necessity, receipt v3, operator console (50+ unit tests) |
| 2026-06-23 | 8b69cd7 CardSorting/LUMI industry-standards pass |
README, CI, community templates, OpenSSF alignment |
| 2026-06-23 | 2.1.0 in CHANGELOG.md | Current extension release line |
timeline
title Fork evolution (2026)
section Apr
Sovereign snapshot : Joy-Zoning Spider
DietCode identity : UI rebrand 4.1.3 VSIX
Substrate 5.10.x : TIA providers
section Jun
BroccoliDB recenter : v21-23 lifecycle
LUMI rebrand : logo lumi commands
Governed swarms : receipts v3 merge gate
LUMI 2.1.0 : CardSorting/LUMI OSS pass
Each era changed what “done” means for an agent session.
| Era | Thesis | Operator experience |
|---|---|---|
| Cline | Human-in-the-loop pair programmer — approve each step, but the model drives pace | Familiar chat + diff; strong MCP and multi-provider story |
| DietCode (sovereign) | Structural truth matters — Spider, Joy-Zoning, and integrity advisories prevent silent architectural drift | More policy signal in tool responses; roadmap steering emerges |
| DietCode + BroccoliDB | Memory and graph are substrate — session layer stays thin; proof lives in @noorm/broccolidb |
Task history and cognitive memory persist locally, not in chat |
| LUMI (governed) | Calm agency — parallel lanes are governed, completion is gated, workspace roadmap truth is coordinator-owned | Sidebar stays open all day; swarms show durable receipts, not chat status |
LUMI did not abandon Cline's approval contract — it extended it to completion, structure, and multi-agent coordination. See philosophy.md.
The fork preserved Cline's session skeleton. New work wrapped governance and substrate around it.
src/extension.ts
→ HostProvider
→ WebviewProvider → Controller
→ Task (agent loop)
→ buildApiHandler → LLM stream
→ ToolExecutorCoordinator → handlers/*
→ HostProvider.hostBridge (files, terminal, window)
| Component | Path | Cline lineage |
|---|---|---|
| Extension entry | src/extension.ts |
Same activation pattern |
| Session controller | src/core/controller/index.ts |
Same responsibility |
| Agent loop | src/core/task/index.ts |
Same observe → stream → tool cycle |
| Webview UI | webview-ui/ |
React sidebar (re-skinned LUMI) |
| MCP hub | src/services/mcp/ |
Same integration model |
| Checkpoints | src/integrations/checkpoints/ |
Git shadow snapshots |
| Host bridge | src/hosts/vscode/hostbridge/ |
gRPC to VS Code APIs |
Internal architecture guide (still titled Cline in places): .dietcoderules/cline-overview.md.
| Addition | Path | Purpose |
|---|---|---|
| BroccoliDB bridge | broccolidb/, dietcode_kernel tool |
Durable memory + structural proof |
| Spider / policy | src/core/policy/spider/ |
Forensic structural advisories |
| Joy-Zoning | stability policy in tool path | Architectural enforcement |
| Completion gates | completionGatePipeline.ts |
attempt_completion audit |
| Roadmap steering | src/services/roadmap/, ROADMAP.md |
Coordinator-owned kanban truth |
| Governed swarms | src/core/task/tools/subagent/ |
Locks, projection, merge gate, receipts |
| Governance | src/core/governance/ |
LockAuthority, fencing tokens |
Full current map: architecture/current.md · AGENT_STACK.md.
Cline established the core contract this fork still honors:
| Capability | Still in LUMI? | LUMI doc |
|---|---|---|
| Diff-before-write file edits | Yes | Working with files |
| Plan / Act modes | Yes | Plan & Act |
| MCP servers | Yes | MCP overview |
| Terminal with consent | Yes | Terminal quick fixes |
| Checkpoints | Yes | Checkpoints |
.clinerules/ project rules |
Renamed | .dietcoderules/ |
| Cline CLI, SDK, Kanban | No — separate repos | cline/cline |
Cline's VS Code marketplace ID remains saoudrizwan.claude-dev (legacy Claude Dev name). Install only one sidebar agent at a time to avoid activity-bar conflicts.
After forking the Cline VS Code extension codebase, CardSorting pursued calm agency through enforced gates, not maximum autonomy.
Kept from Cline: controller → task → tool loop; webview approval UX; MCP/browser shapes; multi-provider handler layout (this build wires 4 providers).
Deliberate divergence:
| Theme | DietCode / LUMI direction |
|---|---|
| Completion | attempt_completion → completionGatePipeline + roadmap audit |
| Structure | Spider + non-blocking integrity advisories (TIA) |
| Steering | ROADMAP.md projection, coordinator-owned commits |
| Rules | .dietcoderules/, .dietcodeignore, .dietcodeworkflows/ |
| Storage | Local SQLite via BroccoliDB |
Milestone: Sovereign Integrity Substrate (V204) — changelogv3.md § 5.10.11.
| Layer | Answers |
|---|---|
LUMI (src/, webview-ui/) |
What happens in this IDE session, with my approval? |
BroccoliDB (broccolidb/) |
What is structurally true about the repo, and what is remembered across sessions? |
Recentering (BroccoliDB v21–v23, Jun 2026) moved graph truth and memory APIs into the substrate package. LUMI tools (dietcode_kernel, mem_*) are thin bridges.
Parallel lanes (use_subagents) required more than background tasks:
| Mechanism | Purpose |
|---|---|
LockAuthority + LockNecessity |
Mutation lanes acquire leases; read lanes skip false alarms |
| Per-agent roadmap projection | Lanes propose patches; coordinator commits workspace truth |
| Merge gate | Reconcile accepted/rejected patches before seal |
| Governed receipt schema v3 | .governed.history.jsonl — operator console |
Deep dive: governed-subagent-execution.md.
LUMI is the user-facing name. DietCode remains the internal module prefix — not a separate shipped product.
| Surface | Value |
|---|---|
| Display name | LUMI |
| Extension IDs | CardSorting.lumi · CardSorting.lumi-vscode |
| VS Code commands | lumi.* |
| Settings | lumi.* (roadmap, UX) · dietcode.isDevMode (dev) |
| User data dir | ~/.dietcode/data/ |
| Workspace DB | ./dietcode.db (BroccoliDB) |
| Homepage | dietcode.io |
| Repository | github.com/CardSorting/LUMI |
| Area | Cline (upstream extension) | LUMI (this repo) |
|---|---|---|
| Approval model | Diff before write; auto-approve rules | Same + completion gate pipeline |
| Modes | Plan / Act | Same (plan_mode_respond / act_mode_respond) |
| Providers | Broad catalog in upstream | 4 wired in this build (OpenRouter, Codex, Nous, Cloudflare) |
| Project rules | .clinerules/ |
.dietcoderules/ |
| Ignore file | .clineignore |
.dietcodeignore |
| Workflows | Cline workflows | .dietcodeworkflows/ |
| Subagents | Background tasks (upstream) | Governed swarms with locks + merge gate |
| Memory | Task history (upstream patterns) | BroccoliDB cognitive memory + SQLite |
| Structural audit | Not a core upstream focus | Spider + Joy-Zoning + dietcode_kernel |
| Roadmap | Kanban product (separate repo) | ROADMAP.md steering in-extension |
| CLI / SDK | First-class Cline products | Not included — use upstream |
| Extension ID | saoudrizwan.claude-dev |
CardSorting.lumi* |
| License | Apache-2.0 © Cline Bot Inc. | Apache-2.0 derivative — NOTICE |
Do not compare 5.10.15 (changelogv3) to 2.1.0 (package.json) directly — they measure different layers.
| Version | File / artifact | Meaning |
|---|---|---|
saoudrizwan.claude-dev |
Cline Marketplace | Upstream extension ID (unchanged) |
4.1.3 |
git e2a36f6 |
Early DietCode VSIX packaging era |
5.10.x |
changelogv3.md | Substrate, Spider, provider releases |
1.1.0 |
broccolidb/package.json |
BroccoliDB package semver |
2.1.0 |
root package.json |
Current LUMI extension |
| Cline | LUMI / DietCode (current) | Documentation |
|---|---|---|
.clinerules/ |
.dietcoderules/ |
Project rules |
.clineignore |
.dietcodeignore |
Ignore file |
| Cline workflows | .dietcodeworkflows/ |
Workflows |
saoudrizwan.claude-dev |
CardSorting.lumi-vscode / CardSorting.lumi |
Installing LUMI |
| Cline settings key prefix | lumi.* + legacy dietcode.* |
VS Code Settings → LUMI |
Prefer DIETCODE_ / lumi.* in new code. Many paths accept CLINE_ during refactor.
| Legacy (Cline) | Current / alias | Example location |
|---|---|---|
CLINE_ENVIRONMENT |
DIETCODE_ENVIRONMENT |
src/config.ts |
CLINE_COMMAND_PERMISSIONS |
DIETCODE_COMMAND_PERMISSIONS |
CommandPermissionController |
CLINE_E2E_TESTS_VERBOSE |
DIETCODE_E2E_TESTS_VERBOSE |
E2E fixtures |
CLINE_MCP_TOOL_IDENTIFIER |
DIETCODE_MCP_TOOL_IDENTIFIER |
src/shared/mcp.ts |
CLINE_OTEL_* |
DIETCODE_OTEL_* (parallel) |
src/shared/services/config/otel-config.ts |
cline.* commands |
lumi.* |
package.json |
cline-rules URLs |
redirect → dietcode-rules |
docs/docs.json |
DietCodeDefaultTool |
internal tool enum | src/shared/tools.ts |
dietcode.db |
BroccoliDB SQLite | workspace .dietcode/ |
Mintlify redirects /customization/cline-rules → /customization/dietcode-rules. New docs use dietcode- paths and LUMI in titles.
- Disable or uninstall
saoudrizwan.claude-dev(avoid duplicate activity bars). - Install LUMI:
CardSorting.lumi-vscode(Marketplace) orCardSorting.lumi(Open VSX). - Re-enter API keys in LUMI Settings — secrets do not migrate between publishers.
# Optional: rename rules (content is compatible; adjust paths if you reference filenames)
mv .clinerules .dietcoderules 2>/dev/null || true
mv .clineignore .dietcodeignore 2>/dev/null || trueVerify project rules and ignore patterns match your expectations.
- Export MCP server config from Cline settings; re-import in LUMI MCP panel (JSON format is similar; validate paths).
- Cline workflow files →
.dietcodeworkflows/per workflows doc.
| Expect | Why |
|---|---|
| Stricter completion | attempt_completion runs audit + roadmap gates |
| ROADMAP.md prompts | Optional steering — not in base Cline extension |
| Fewer providers wired | Only 4 handlers in buildApiHandler; others exist as reference code |
| Governed subagents | Declare [execution_mode:…] in lane prompts when using use_subagents |
| Local data path | ~/.dietcode/data/ — not Cline's storage location |
Use upstream Cline if you need CLI, TypeScript SDK, Kanban, or the full upstream provider matrix without fork-specific governance.
Honest snapshot of remaining Cline/DietCode identifiers (grep-backed, ongoing refactor):
| Location | Status | Notes |
|---|---|---|
src/config.ts, permissions, E2E |
Dual env vars | CLINE_* aliases beside DIETCODE_* |
src/shared/tools.ts |
DietCodeDefaultTool | Enum name; tools work as LUMI |
~/.dietcode/, dietcode.db |
Intentional | Storage namespace until migration |
evals/ package names |
Legacy | @cline/analysis, cline-evals |
locales/*/README.md |
Stale | Still Cline-branded; use root README |
.dietcoderules/cline-overview.md |
Legacy title | Architecture doc; content applies to LUMI |
docs/docs.json redirects |
Intentional | /cline-rules → /dietcode-rules |
docs/styles.css, hubspot.js |
Legacy comments | Cline doc site leftovers |
| System prompt snapshots | Mixed | Some docs.cline.bot fetch hints in test snapshots |
User-facing rule: say LUMI in UI and docs; grep for cline when debugging internals.
| Cline product (2026) | In this repo? |
|---|---|
| VS Code extension agent | Yes — evolved as LUMI |
| CLI | No |
| TypeScript SDK | No |
| Kanban | No — ROADMAP.md steering instead |
| Cline hosted account/sync | Not a goal — local-first BroccoliDB |
When evaluating features: session agent (here) vs Cline platform (upstream monorepo).
| File | Scope |
|---|---|
| CHANGELOG.md | LUMI extension releases (semver), GitHub-facing |
| changelogv3.md | Substrate/provider history (DietCode 5.x era) |
| broccolidb/CHANGELOG.md | BroccoliDB package only |
| .wiki/changelog.md | Internal wiki (if present) |
| Audience | Start here |
|---|---|
| Cline user evaluating LUMI | README — Coming from Cline? |
| Design intent | philosophy.md |
| Metrics and capabilities | companion-brief.md |
| Two-layer architecture | AGENT_STACK.md |
| Current code map | architecture/current.md |
| Governed swarms | governed-subagent-execution.md |
| Upstream credit | NOTICE |
Thank you to the Cline maintainers and contributors for the foundation this project builds on.