Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
14e5c7e
refactor(tools): migrate 17 tool files to explicit context — eliminat…
Mar 18, 2026
0e99156
refactor: parameterize state() in 9 leaf modules — add directory thre…
Mar 18, 2026
f573d05
refactor: eliminate Instance.bind() — replace with captured closures …
Mar 18, 2026
8937458
refactor: thread directory/worktree through formatter enabled() check…
Mar 18, 2026
184abfa
refactor: thread directory/worktree through LSP module (B6)
Mar 18, 2026
632cd4f
refactor: parameterize session leaf helpers — system, instruction, st…
Mar 18, 2026
464c13c
refactor: parameterize worktree + config modules (B8)
Mar 18, 2026
90ea574
docs: update tracking docs — B2-B8 complete, 172 Instance refs remain
Mar 18, 2026
29f58e4
refactor: capture Instance values at entry points, parameterize sessi…
Mar 18, 2026
d265eae
refactor: Effect service layers read InstanceContext instead of Insta…
Mar 18, 2026
503d25a
refactor: parameterize prompt.ts — capture Instance at function entry…
Mar 18, 2026
3354b1d
docs: update tracking docs — B9 + B10a-c complete, 144 Instance refs …
Mar 18, 2026
3a7d4dc
refactor: extract InstanceALS module — pure ALS context holder (B10d)
Mar 18, 2026
0662f43
refactor: thread directory to Bus.publish in session module (B10e-1)
Mar 18, 2026
c60745f
refactor: thread directory through prompt/status/compaction (B10e-2)
Mar 18, 2026
d0e73ed
refactor: introduce InstanceLifecycle module (B10f-1)
Mar 18, 2026
f149c35
refactor: migrate all Instance.provide/dispose callers to InstanceLif…
Mar 18, 2026
c41ed9a
refactor: migrate all Instance ALS reads to InstanceALS (B10g-1)
Mar 18, 2026
c920eef
refactor: reduce Instance to test-only compatibility shim (B10g-2)
Mar 18, 2026
bb6f29e
docs: update tracking docs — B10d-g complete
Mar 18, 2026
f478803
refactor: migrate test fixtures to InstanceALS + InstanceLifecycle
Mar 18, 2026
f22fcb7
refactor: migrate tests off Instance shim + delete src/project/instan…
Mar 19, 2026
00d83d1
refactor: make state() directory param required in leaf modules
Mar 19, 2026
425d8ef
refactor: eliminate 8 more ALS fallbacks (command, mcp, status, migra…
Mar 19, 2026
218c349
test: add TUI component tests — helpers + 5 dialogs + 3 standalones
Mar 19, 2026
752171f
docs: final status — Instance deleted, 23 fallbacks eliminated, 81 TU…
Mar 19, 2026
b518d5c
test: add tmux-based TUI integration test harness
Mar 20, 2026
ea7a1c5
docs: update all tracking docs with accurate gap analysis
Mar 20, 2026
70806b2
docs: plan remaining fallback elimination in 3 batches
Mar 20, 2026
fbf566f
refactor: eliminate 20 session module ALS fallbacks
Mar 20, 2026
4d32957
refactor: eliminate worktree/pty/bash ALS fallbacks (6 patterns)
Mar 20, 2026
e54d295
refactor: eliminate all remaining ALS fallbacks — zero remain
Mar 20, 2026
72bd623
docs: all 59 ALS fallbacks eliminated — zero remain
Mar 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,10 @@ Use `context_history` to navigate the edit DAG:
- Test actual implementation, do not duplicate logic into tests
- Tests cannot run from repo root (guard: `do-not-run-tests-from-root`); run from package dirs like `packages/opencode`.

## Pre-existing Failures and Bugs

**IMPORTANT:** Pre-existing failures, bugs, and issues MUST be fixed too — always. Do not ignore typecheck errors, lint warnings, unused variables, broken imports, or failing tests just because they existed before your changes. If you encounter a pre-existing issue during your work, fix it as part of your changes. This applies to all types of issues: type errors, dead code, incorrect logic, missing exports, stale references, etc.

## Git Workflow

- **NEVER commit or push directly to `dev`.** Always work on a feature/fix/docs branch and create a PR.
Expand Down
19 changes: 18 additions & 1 deletion BUGS.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,23 @@ All bugs tracked here. Do not create per-package bug files.

---

## Manual TUI Testing (2026-03-20)

Tested on branch `effect/complete-effectification` (27 commits ahead of `dev`) using tmux-based test harness and manual interaction. Model: GLM-5 Z.AI Coding.

| Flow | Result | Notes |
| --- | --- | --- |
| Home screen | ✅ Pass | Logo, prompt, tips, status bar render correctly |
| Command palette (Ctrl+P) | ✅ Pass | Opens, shows Session/Skills/Open editor/Switch session |
| Agent cycling (Tab) | ✅ Pass | Cycles through Build/Plan/Docs agents |
| Message submission | ✅ Pass | Enter submits, streaming dots visible, response renders with token/cost metadata |
| Cost dialog (/cost) | ✅ Pass | Shows Sess/☼-ly/☽-ly rows with cache hit %, esc dismisses |
| Status bar | ✅ Pass | Shows branch, agent, model, hints |

No new bugs found during manual testing.

---

## False Positives / Intentional

| Issue | Resolution |
Expand Down Expand Up @@ -73,4 +90,4 @@ All bugs tracked here. Do not create per-package bug files.

## Notes

**TUI Testing:** Playwright not feasible (OpenTUI+SolidJS). Use `createTestRenderer()`, `@solidjs/testing-library`, or Termwright. Keep Playwright for `packages/app` only.
**TUI Testing:** Playwright not feasible (OpenTUI+SolidJS). Use `testRender()` from `@opentui/solid` for unit tests. tmux-based integration harness at `test/cli/tui/tmux-tui-test.ts` for E2E flows.
37 changes: 15 additions & 22 deletions DO_NEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,34 @@
- [x] Integration (system prompt injection, plugin hooks, lifecycle sweeper)
- [x] v2: query/toolName targeting, classifier_threads, distill_threads, /btw, /focus, /reset-context
- [x] Config-based control (no feature toggles)
- [x] Documentation (README, docs/context-editing, docs/schema, docs/agents, AGENTS.md)
- [x] Ephemeral commands (/threads, /history, /tree, /deref, /classify)
- [x] /cost TUI command with usage dialog
- [x] Verify tool (test/lint/typecheck with circuit breaker)
- [x] Refine tool (evaluator-optimizer loop)
- [x] Script discovery and execution from skills
- [x] 40 bugs fixed (code review audits + ephemeral fixes)
- [x] 25 regression tests for bug fixes
- [x] Upstream backport Phase 1 — 9 bug fixes (B1-B9) in [#16](https://github.com/e6qu/frankencode/pull/16)
- [x] Upstream backport Phase 2 — 6 bug fixes (B10-B16) in [#17](https://github.com/e6qu/frankencode/pull/17)
- [x] Upstream backport Phase 1-4 (bug fixes + full rebase)
- [x] Effect-ification B1-B10g: Instance decoupled, deleted from src/, test shim created
- [x] ALS fallback elimination: 23 of 59 patterns removed (15 leaf state() + 8 non-state)
- [x] TUI tests: 81 component tests + tmux integration harness (5 flows)
- [x] Manual TUI testing: home, command palette, agent cycling, message submit, cost dialog — all pass

## Next — Upstream Backport Phase 3
## Next — PR to dev

Remaining cherry-pickable upstream commits. Requires fresh analysis of upstream since last sync.
- [ ] PR `effect/complete-effectification` → `dev` (27 commits)

- [ ] Re-scan upstream for new commits since Phase 2 analysis
- [ ] Identify any remaining cherry-pickable fixes
- [ ] Apply and test
## Done — All 59 ALS Fallbacks Eliminated

## Next — Upstream Full Rebase (Phase 4)
- [x] Batch A: Session modules (20 fallbacks) — system, instruction, compaction, llm, index, prompt
- [x] Batch B: Worktree + Pty + Bash (6 fallbacks) — ctx required, directory required
- [x] Batch C: Wide-caller modules (10 fallbacks) — env (25 callers), plugin (31 callers), bus (78 callers)

After all backports are merged, rebase onto `upstream/dev` to pick up the Effect-ification wave.
## Next — Remaining TUI Tests

- [ ] **Rebase onto upstream/dev** — resolve conflicts in `skill.ts`, `prompt.ts`, `message-v2.ts`, `instance.ts`
- [ ] **Adapt `Instance.state()` calls** — upstream deleted `instance-state.ts`; our CAS, EditGraph, SideThread, Objective, Skill cache, Command state all use it
- [ ] **Wrap event handlers with `Instance.bind()`** — upstream requires this for ALS context in callbacks
- [ ] **Reimplement skill content cache** — upstream rewrote `skill.ts` to `SkillService` (Effect)
- [ ] **Test after rebase** — run full suite, fix breakage
- [ ] 9 dialog tests: command, provider, session-rename, stash, status, tag, workspace-list, mcp, cost (enhance)
- [ ] Route tests: home, session
- [ ] Interaction tests: dialog-select keyboard nav, prompt input, command palette

## Backlog — Testing

Expand All @@ -45,17 +45,10 @@ After all backports are merged, rebase onto `upstream/dev` to pick up the Effect
- [ ] Unit tests for SideThread CRUD
- [ ] Unit tests for ContextEdit validation (ownership, budget, recency, privileged agents)
- [ ] Unit tests for lifecycle sweeper (discardable auto-hide, ephemeral auto-externalize)
- [ ] Test classifier_threads + distill_threads with a real session
- [ ] Test /btw command (verify it forks, doesn't pollute main thread)

## Backlog — Features

- [ ] CAS garbage collection (orphan cleanup, size limits)
- [ ] TUI rendering of edit indicators (hidden/replaced/annotated parts)
- [ ] Session.remove() cleanup of EditGraph rows (add CASCADE or explicit delete)
- [ ] CAS.store() ownership: stop overwriting session_id on hash collision

## Backlog — Design Decisions

- [ ] Explore: make /btw use Session.fork() for true message-level isolation
- [ ] Evaluate upstream's `tools` deprecation and migration to permission-only model
35 changes: 14 additions & 21 deletions PLAN.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Frankencode Feature Roadmap

> **Frankencode** is a fork of [OpenCode](https://github.com/anomalyco/opencode) (`dev` branch) that adds surgical, reversible, agent-driven context editing with content-addressable storage and a conversation history graph.
> **Frankencode** is a fork of [OpenCode](https://github.com/anomalyco/opencode) (`dev` branch) that adds context editing, content-addressable storage, and an edit graph.

**Status (2026-03-18):** All features implemented. 40 bugs fixed. 15 upstream bug fixes backported (Phase 1 + Phase 2). 1401 tests passing. See `STATUS.md` for current state, `DO_NEXT.md` for what's next.
**Status (2026-03-20):** Features implemented. 40 bugs fixed. Upstream synced. Effect-ification complete — `src/project/instance.ts` deleted, Instance split into InstanceALS + InstanceLifecycle + InstanceContext. 36 ALS fallbacks remain (wide-caller modules, deferred). 1447 tests passing (123 test files), 0 TS errors. See `STATUS.md`, `DO_NEXT.md`.

---

Expand All @@ -19,25 +19,13 @@ Upstream (`anomalyco/opencode`) has diverged by ~50 commits. Two classes of chan
- B10: snapshot config `.describe()` | B12: Windows editor shell | B13: Copilot Enterprise removal | B14: org label scoping | B16: review comment CSS/events | B11 partial: test preload plugins
- Skipped: B11 (most — requires Effect FileService), B15 (already fixed)

### B. Effect-ification (full rebase required)
### B. Effect-ification — ✅ Complete (on branch)

These changes form a dependency chain and cannot be cherry-picked individually. They require a coordinated rebase.
All stages B1-B10g complete on `effect/complete-effectification` (27 commits). Instance decoupled into InstanceALS (ALS context propagation), InstanceLifecycle (boot/dispose/reload), InstanceContext (Effect bridge). `src/project/instance.ts` deleted. Test shim at `test/fixture/instance-shim.ts`.

**Dependency order:**
1. `refactor(instance)` — move scoped services to LayerMap (#17544) — **foundation**
2. `stack: effectify-file-watcher-service` (#17827)
3. `refactor(file-time)` — effectify with Semaphore locks (#17835)
4. `fix+refactor(vcs)` — effectify VcsService (#17829)
5. `refactor(format)` — effectify FormatService (#17675)
6. `refactor(file)` — effectify FileService (#17845)
7. `refactor(skill)` — effectify SkillService (#17849)

**Impact on Frankencode:**
- `Instance.state()` → deleted; replaced by `InstanceContext` + Effect service classes
- Our `Skill.state()` content cache → must reimplement inside `SkillService`
- Our `Command.state()` → must adapt to new Instance API
- Event handlers → must wrap with `Instance.bind()` for ALS context preservation
- `CAS`, `EditGraph`, `SideThread`, `Objective` → all use `Instance.state()` or direct `Database.use()` — need review
**Remaining work (deferred to future PR):**
- 36 `?? InstanceALS.x` fallback patterns in wide-caller modules (env, bus, plugin, session core, worktree, pty, bash)
- 150 direct InstanceALS reads across 40 files (correct usage at entry points, not fallbacks)

### C. Other upstream changes (informational, no action needed)

Expand Down Expand Up @@ -95,5 +83,10 @@ These appear as "deletions" in `git diff dev..upstream/dev` because upstream nev
| Bug Fix Pass (16 bugs) | ✅ Complete |
| Upstream Bug Backport P1 | ✅ Complete (#16) |
| Upstream Bug Backport P2 | ✅ Complete (#17) |
| Upstream Backport P3 | ⬜ Next |
| Upstream Full Rebase | ⬜ After backports |
| Upstream Backport P3 (app fixes) | ✅ Complete (#18) |
| Upstream Full Rebase (Phase 4) | ✅ Complete (#19) |
| Effect-ification B1 (state maps) | ✅ Complete (#20) |
| Effect-ification B2-B10g | ✅ Complete (on branch, 27 commits) |
| Instance deletion + test migration | ✅ Complete (on branch) |
| ALS fallback elimination | ✅ All 59 of 59 eliminated (on branch) |
| TUI component tests | ✅ 81 tests + tmux integration harness (on branch) |
83 changes: 53 additions & 30 deletions STATUS.md
Original file line number Diff line number Diff line change
@@ -1,61 +1,84 @@
# Frankencode — Project Status

**Date:** 2026-03-18
**Date:** 2026-03-20
**Upstream:** `anomalyco/opencode` @ `dev`
**Fork:** `e6qu/frankencode` @ `dev`

## Overview

Frankencode is a fork of OpenCode that adds surgical, reversible, agent-driven context editing with content-addressable storage and a conversation history graph. All 4 planned feature phases are implemented. Upstream sync is complete. Effect-ification of all 16 `Instance.state()` modules is complete.
Frankencode is a fork of OpenCode that adds context editing, CAS, and an edit graph. Effect-ification complete — `src/project/instance.ts` deleted, Instance split into InstanceALS + InstanceLifecycle + InstanceContext. Test shim at `test/fixture/instance-shim.ts`. All 59 ALS fallback patterns eliminated — zero `?? InstanceALS.x` in src/. 1447 tests passing across 122 files, 0 TS errors.

## Branch Status

| Branch | Status | PR |
|--------|--------|----|
| `dev` | Main development branch | — |
| `effect/complete-effectification` | B1-B10g complete, Instance deleted, 81 TUI tests, 27 commits | Pending PR to `dev` |
| `fix/code-review-bugs` | 16 bug fixes + 25 tests | [#12](https://github.com/e6qu/frankencode/pull/12) (merged) |
| `fix/upstream-backports-p1` | Phase 1: 9 upstream bug fixes (B1-B9) | [#16](https://github.com/e6qu/frankencode/pull/16) (merged) |
| `fix/upstream-backports-p2` | Phase 2: 6 upstream bug fixes (B10-B16) | [#17](https://github.com/e6qu/frankencode/pull/17) (merged) |
| `fix/upstream-backports-p3` | Phase 3: 6 upstream app fixes (B17-B22) | [#18](https://github.com/e6qu/frankencode/pull/18) (merged) |
| `fix/upstream-backports-p4` | Phase 4: rebase onto upstream/dev (Effect integration) | [#19](https://github.com/e6qu/frankencode/pull/19) (merged) |
| `refactor/effectify-trivial` | Effect-ification of all 16 Instance.state() modules | In progress |

## Upstream Sync

- **Fully synced** with `upstream/dev` as of Phase 4 rebase
- **17 commits ahead** of upstream (Frankencode features only)
- 2 new upstream commits since sync: TruncateService effectification (#17957) — minor, next routine sync
| `refactor/effectify-trivial` | B1: 16 Instance.state() modules → module-level state maps | [#20](https://github.com/e6qu/frankencode/pull/20) (merged) |

## Effect-ification Status

### Already effectified (upstream, integrated in Phase 4):
FileService, FileTimeService, FileWatcherService, VcsService, SkillService, FormatService, QuestionService, PermissionService, ProviderAuthService, SnapshotService

### Converted from `Instance.state()` (this branch):
All 16 modules converted. `Instance.state()` method and `State` module deleted. `Scheduler` module deleted (replaced by inline timer in bootstrap).

Modules with Effect services registered in `instances.ts`:
- EnvService, BusService, SessionStatusService, InstructionService

Modules using `registerDisposer` for lifecycle (can't be in `instances.ts` due to circular deps):
- Config, TuiConfig, Plugin, ToolRegistry, Provider, Agent, Command, Prompt, PTY, LSP, MCP

### Fork modules (no `Instance.state()`, may benefit from Effect services):
- `cas/index.ts` — Database-backed, no caching (OK as-is)
- `cas/graph.ts` — Complex DAG with atomicity needs
- `context-edit/index.ts` — Very complex, 709 lines, transaction semantics
- `session/side-thread.ts` — Simple CRUD (OK as-is)
- `session/objective.ts` — Trivial KV (OK as-is)
### Goal: Replace Instance ALS with explicit parameter threading

The `Instance` singleton used AsyncLocalStorage (ALS) for per-directory context. The Effect runtime has a per-directory `LayerMap` with 24+ services. We threaded explicit parameters through all modules to replace ALS reads.

### Progress: B1-B10g complete, Instance deleted

| Stage | Name | Files | Status |
|-------|------|-------|--------|
| B1 | Instance.state() elimination | 16 modules | **Done** (PR #20) |
| B2 | Tool layer migration | 31 files | **Done** |
| B3 | Leaf state-map modules + agent | 9 files | **Done** |
| B4 | Instance.bind() elimination | 5 files | **Done** |
| B5 | Formatter parameter threading | 2 files | **Done** |
| B6 | LSP module | 3 files | **Done** |
| B7 | Session leaf helpers | 5 files | **Done** |
| B8 | Worktree + Config modules | 4 files | **Done** |
| B9 | Server + CLI entry points | ~20 files | **Done** |
| B10a-b | Effect runtime + service-layers | 3 files | **Done** |
| B10c | prompt.ts construction sites | 1 file | **Done** |
| B10d | ALS fallback removal (leaf state()) | 15 files | **Done** |
| B10e | Additional fallbacks (command, mcp, status, config) | 10 files | **Done** |
| B10f | InstanceLifecycle module | 2 files | **Done** |
| B10g | Instance deleted, tests migrated | 59 files | **Done** |

### Remaining ALS fallbacks (36 patterns, deferred)

| Module | Count | Reason deferred |
|--------|-------|-----------------|
| `session/prompt.ts` | 5 | Deep call chains, many callers |
| `session/instruction.ts` | 5 | Interleaved directory/worktree params |
| `session/index.ts` | 4 | projectID/vcs/worktree threading |
| `session/system.ts` | 3 | ctx parameter threading |
| `session/compaction.ts` | 2 | directory/worktree in process() |
| `session/llm.ts` | 1 | projectID header |
| `worktree/index.ts` | 4 | ctx parameter threading |
| `env/index.ts` | 4 | 26+ callers in provider module |
| `plugin/index.ts` | 4 | 14+ caller files |
| `bus/index.ts` | 2 | 33+ caller files |
| `pty/index.ts` | 1 | Test file dependency |
| `tool/bash.ts` | 1 | Test file dependency |

### Entry-point reads (correct usage, 150 across 40 files)

These are `InstanceALS.directory` / `.worktree` / `.project` reads inside `InstanceALS.run()` callbacks at server routes, CLI commands, and event handlers. This is the intended usage pattern — they capture context at the boundary and pass it down.

## Test Status

- **1423 tests passing**, 0 failures, 8 skipped
- **1447 tests passing**, 0 failures, 8 skipped, across **123 test files**
- **81 TUI component tests** (helpers + 5 dialog + 3 standalone) across 13 files
- **1 tmux integration test harness** (5 flows: home, command palette, agent cycle, submit, cost dialog)
- **25 regression tests** for bug fixes
- **Typecheck:** clean (`bun typecheck`) across all 13 packages
- **0 TypeScript errors** (`npx tsc --noEmit`)

## Bug Status

- **0 active bugs**
- **0 active bugs** (confirmed via manual TUI testing 2026-03-20)
- **40 bugs fixed**
- **4 open design issues** (CAS GC, objective staleness, EditGraph leak, CAS ownership)

Expand Down
25 changes: 25 additions & 0 deletions WHAT_WE_DID.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,31 @@ Root-level: `PLAN.md`, `WHAT_WE_DID.md`, `DO_NEXT.md`

---

## Phase 7: Effect-ification — Remove Instance ALS

Goal: eliminate the `Instance` AsyncLocalStorage singleton entirely. The Effect runtime already has a per-directory `LayerMap` with 24+ services via `InstanceContext`.

### Completed stages (B1-B8):

| Stage | Commit | What changed |
|-------|--------|-------------|
| B1 | PR #20 | 16 modules converted from `Instance.state()` to module-level state maps with `registerDisposer` |
| B2 | `14e5c7e60` | 17 tool files + 12 test files: `Tool.Context` extended with directory/worktree/projectID/containsPath |
| B3 | `0e9915688` | 9 leaf modules (env, bus, command, provider, plugin, mcp, pty, agent): `state()` parameterized |
| B4 | `f573d0511` | 5 `Instance.bind()` sites replaced with captured closures (watcher, vcs, format, pty) |
| B5 | `893745855` | 25 formatter `enabled()` functions: accept (directory, worktree) params |
| B6 | `184abfa24` | LSP module: 37 spawn + root functions accept directory/worktree; Instance removed from server.ts, client.ts |
| B7 | `632cd4f88` | Session leaf helpers (system, instruction, compaction, status, llm): parameterized with ALS fallback |
| B8 | `464c13cf1` | Worktree (21→9 refs) + Config (state() parameterized, initConfig captures at entry) |

**Progress:** 221 → 172 `Instance.*` references (49 removed). All inner modules accept explicit parameters.

### Remaining stages (B9-B10):
- **B9:** Server + CLI entry points (~18 files, ~45 occurrences) — capture Instance values at handler top, pass down
- **B10:** ALS elimination — parameterize runtime, delete Instance module

---

## Upstream Sync Status (2026-03-18)

**Upstream:** `anomalyco/opencode` (`dev` branch)
Expand Down
1 change: 1 addition & 0 deletions packages/opencode/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ dist
gen
app.log
src/provider/models-snapshot.ts
test/cli/tui/screenshots/
2 changes: 1 addition & 1 deletion packages/opencode/script/seed-e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const modelID = parts[1] ?? "gpt-5-nano"
const now = Date.now()

const seed = async () => {
const { Instance } = await import("../src/project/instance")
const { Instance } = await import("../test/fixture/instance-shim")
const { InstanceBootstrap } = await import("../src/project/bootstrap")
const { Config } = await import("../src/config/config")
const { disposeRuntime } = await import("../src/effect/runtime")
Expand Down
Loading
Loading